#DBMS_STANDARD

DBMS_STANDARD包提供了一组内置的存储过程/函数,主要用于PL中的异常处理,事务处理,及外置java函数控制。

调用DBMS_STANDARD包的子程序时,可以省略DBMS_STANDARD,直接使用子程序名。

# RAISE_APPLICATION_ERROR

示例

DBMS_STANDARD.RAISE_APPLICATION_ERROR(
    errCode         IN INTEGER,
    errMsg          IN VARCHAR,
    reserveErrStack IN BOOLEAN DEFAULT FALSE);

RAISE_APPLICATION_ERROR存储过程用于在PL程序中手动抛出异常。

参数 描述
errCode 错误号,范围在[30000, 99999]。
errMsg 错误消息,长度不大于1024bytes。错误消息字符串的空白符后缀会被移除。
reserveErrStack 保留字段,仅语法兼容。

示例

CREATE OR replace PROCEDURE account_status (
    due_date DATE,
    today DATE) IS
BEGIN
    IF due_date < today THEN -- explicitly RAISE EXCEPTION
      DBMS_STANDARD.RAISE_APPLICATION_ERROR(29999+1, 'Account past due.');
    END IF;
END;
/

DECLARE
    past_due EXCEPTION; -- DECLARE EXCEPTION
    PRAGMA EXCEPTION_INIT (past_due, 30000); 
BEGIN
    account_status (TO_DATE('01-JUL-2010', 'DD-MON-YYYY'),
    TO_DATE('09-JUL-2010', 'DD-MON-YYYY')); 
EXCEPTION
    WHEN past_due THEN -- handle EXCEPTION
        DBMS_OUTPUT.PUT_LINE('SUCCESS!');
END;
/

--result
SUCCESS!

# LOADJAVA

示例

DBMS_STANDARD.LOADJAVA(
    javaPath IN VARCHAR);

LOADJAVA存储过程用于加载一个java文件,在外置UDF场景中使用。

YashanDB会在当前用户下自动创建一个自定义库对象,对象的名称由输入的路径按照一定规则生成,区分大小写,需要符合YashanDB的对象命名规范

YashanDB已提供直接创建自定义库的功能,此方式不再建议使用。

参数 描述
javaPath 需要加载的class文件或者jar路径,长度不超过255字节。

示例

call DBMS_STANDARD.LOADJAVA('/mnt/d/com/test/Hello.class');

# DROPJAVA

DBMS_STANDARD.DROPJAVA(
    javaPath IN VARCHAR);

DROPJAVA存储过程用于卸载一个java文件,在外置UDF场景中使用。

参数 描述
javaPath 需要卸载的class文件或者jar路径,长度不超过255字节。

示例

call DBMS_STANDARD.DROPJAVA('/mnt/d/com/test/Hello.class');

# INSERTING

INSERTING函数用于在INSERT语句中执行的触发器内返回TRUE,该函数无参数,使用请参考触发器中的例程。

# DELETING

DELETING函数用于在DELETE语句中执行的触发器内返回TRUE,该函数无参数,使用请参考触发器中的例程。

# UPDATING

示例

DBMS_STANDARD.UPDATING(
    colName IN VARCHAR);

UPDATING函数用于在UPDATE语句中执行的触发器内更新的列与输入参数匹配时返回TRUE。

参数 描述
colName UPDATE操作中更新的列名。当更新的列与colName一致时返回TRUE。当没有设置colName时,更新任何列都返回TRUE。

使用请参考触发器中的例程。