Skip to content

EXCEPTION_INIT语句

PRAGMA EXCEPTION_INIT将异常名称与相应错误号关联,通过关联的错误号捕获异常信息,对于未命名的内部异常则可使用该方式为其添加异常名称,并为其编写一个特定的处理程序,而不是使用OTHERS处理程序。

语法格式

sql
PRAGMA EXCEPTION_INIT(name,integer);

参数说明

  • name:当前PL/SQL语句、子程序或包中声明的用户自定义异常名。
  • integer:任何有效的虚谷数据库错误号,该错误号与函数SQLCODE返回的错误号一致。

说明:

  • 错误号取值范围为[1,99999]。
  • PRAGMA必须与EXCEPTION_INIT同时出现。

示例

  • 示例1 自定义异常名与数据库定义错误号E16005关联

    sql
    CREATE TABLE tb_ex(id INT PRIMARY KEY);
    
    DECLARE
      no_null EXCEPTION;
      PRAGMA EXCEPTION_INIT(no_null,16005);
    BEGIN
      INSERT INTO tb_ex VALUES(NULL);
    EXCEPTION
      WHEN no_null THEN
        DBMS_OUTPUT.PUT_LINE(SQLERRM);
    END;
    /
    
    -- 输出:
    字段ID不能取空值
  • 示例2 自定义错误号

    sql
    DECLARE
      ud_errc EXCEPTION;
      PRAGMA EXCEPTION_INIT (ud_errc,99996);
    BEGIN
      RAISE ud_errc;
    EXCEPTION
      WHEN ud_errc THEN
        SEND_MSG(SQLCODE);
    END;
    /
    
    -- 输出:
    99996