加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle PL/SQL开发基础(第三十三弹:EXCEPTION_INIT)

发布时间:2020-12-12 13:33:59 所属栏目:百科 来源:网络整理
导读:如果有一些异常并没有异常名称,比如一些ORA-开头的异常并没有一个友好的预定义的异常定义,此时在WHEN子句中无法使用具体的异常名称,必须要使用OTHERS异常处理器进行捕捉。通过 EXCEPTION_INIT 编译指示,可以为这些不在预定义异常范围内的异常添加名称。

如果有一些异常并没有异常名称,比如一些ORA-开头的异常并没有一个友好的预定义的异常定义,此时在WHEN子句中无法使用具体的异常名称,必须要使用OTHERS异常处理器进行捕捉。通过EXCEPTION_INIT编译指示,可以为这些不在预定义异常范围内的异常添加名称。

编译指示是指能在编译期而非运行时进行处理的编译指令。

编译指令EXCEPTION_INIT将告诉编译器,将异常名称和错误编号关联起来,使得在PL/SQL语句块中可以使用名称来引用所有的内部异常,为其在EXCEPTION语句块中编写特定的处理程序。?
基本语法如下:

PRAGMA EXCEPTION_INIT (exception_name,oracle_error_number);

PRAGMA是编译指令的声明,表示EXCEPTION_INIT编译指令将在编译时被处理而不是运行时,通常也称为伪指令。

看一个例子:

DECLARE
    e_missingnull EXCEPTION;  -- 先声明一个异常
    PRAGMA EXCEPTION_INIT (e_missingnull,-1400);  -- 将该异常与-1400进行关联
BEGIN
    INSERT INTO emp(empno) VALUES (NULL);  -- 向emp表中不为空的列插入NULL值
    COMMIT;
EXCEPTION
    WHEN e_missingnull THEN
        DBMS_OUTPUT.put_line(SQLERRM);
        ROLLBACK;
END; 

?

?

最终会产生如下 输出:

ORA-01400:无法将NULL插入("APPS"."EMP"."EMPNO")转载:https://blog.csdn.net/lianjiww/article/details/77074083

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读