博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle PL/SQL之EXCEPTION
阅读量:4336 次
发布时间:2019-06-07

本文共 2515 字,大约阅读时间需要 8 分钟。

Test Code:

DECLARE BEGIN <<test0>> -- most normal way to handle exception. DECLARE except_test0 EXCEPTION; BEGIN RAISE except_test0; EXCEPTION WHEN except_test0 THEN dbms_output.put_line('test0 except_test0: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); WHEN OTHERS THEN dbms_output.put_line('test0 OTHERS: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); END; <<test1>> -- custom exception error number. DECLARE except_test1 EXCEPTION; -- suggested error number range: -20,NNN. PRAGMA EXCEPTION_INIT(except_test1, -20001); BEGIN RAISE except_test1; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('test1: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); END; <<test2>> -- custom exception error number and error message. BEGIN raise_application_error(-20002, 'except test 2'); EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20002 THEN dbms_output.put_line('test2A: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); dbms_output.put_line('test2B: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); ELSE dbms_output.put_line('test2C: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); END IF; END; -- SQLCODE and SQLERRM will be re evaluated after EXCEPTION handled. dbms_output.put_line('test2D: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); <<test3>> -- custom exception error number and error message, more readable. DECLARE except_test3 EXCEPTION; PRAGMA EXCEPTION_INIT(except_test3, -20001); BEGIN raise_application_error(-20001, 'except test 3'); EXCEPTION WHEN except_test3 THEN dbms_output.put_line('test3 except_test3: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); WHEN OTHERS THEN dbms_output.put_line('test3 OTHERS: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); END; <<test4>> -- exception can be re raised. BEGIN RAISE no_data_found; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('test4: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); RAISE; END; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('outer: SQLCODE=' || SQLCODE || ', SQLERRM=' || SQLERRM); END;

 

Output:

test0 except_test0: SQLCODE=1, SQLERRM=User-Defined Exception test1: SQLCODE=-20001, SQLERRM=ORA-20001: test2A: SQLCODE=-20002, SQLERRM=ORA-20002: except test 2 test2B: SQLCODE=-20002, SQLERRM=ORA-20002: except test 2 test2D: SQLCODE=0, SQLERRM=ORA-0000: normal, successful completion test3 except_test3: SQLCODE=-20001, SQLERRM=ORA-20001: except test 3 test4: SQLCODE=100, SQLERRM=ORA-01403: no data found outer: SQLCODE=100, SQLERRM=ORA-01403: no data found

转载于:https://www.cnblogs.com/zlja/archive/2011/05/24/2449114.html

你可能感兴趣的文章
Dialog+NumberPicker
查看>>
12306 查票接口
查看>>
Django 路由控制
查看>>
ARM Linux入门与实践(内附光盘1张)
查看>>
【模板】AC自动机(简单版)
查看>>
WINCE BSP包只读属性导致编译出错
查看>>
windows文件传输方法
查看>>
如何推天干地支获取自己生辰八字
查看>>
洛谷3354(IOI2005)河流——“承诺”
查看>>
bzoj 2946 [Poi2000]公共串——后缀自动机
查看>>
设计模式 - Singleton
查看>>
Graph Valid Tree -- LeetCode
查看>>
C#通过Ado.net对连接数据库并进行添加删除等常规操作的代码
查看>>
康拓展开
查看>>
swap交换2变量
查看>>
洛谷P2495 [SDOI2011]消耗战(虚树)
查看>>
HP服务器安装CentOS7 x64无法识别阵列卡
查看>>
北京楼市政策松动信号加强 新盘价格仍平稳
查看>>
常用演示版保护技术
查看>>
oracle系统化学习笔记
查看>>