没有合适的资源?快使用搜索试试~ 我知道了~
有关于ORACLE PL/SQL异常处理的3个知识点!
需积分: 10 20 下载量 75 浏览量
2008-10-17
15:32:43
上传
评论
收藏 5KB TXT 举报
温馨提示
试读
8页
ORACLE PL/SQL异常处理.有关于异常处理的3个知识点!
资源推荐
资源详情
资源评论
~~~~有关于异常处理的3个知识点!
1.EXCEPTION_INT编译指示
功能是将某命名异常同某特定Oracle错误关联起来.
主用用来捕捉某特定异常错误,而不是通过OTHERS来处理.
语法:PROGMA EXCEPTION_INIT(exception_name,oracle_error_number)
SQL>
SQL> DECLARE
2 expa EXCEPTION;
3 PRAGMA EXCEPTION_INIT(expa,-6502);
4 vn NUMBER(1);
5 BEGIN
6 vn:=24;
7 EXCEPTION
8 WHEN expa THEN
9 dbms_output.put_line('数字或值错误 : 数值精度太高');
10 WHEN OTHERS THEN
11 dbms_output.put_line(SQLCODE);
12 dbms_output.put_line(substr(SQLERRM,1,100));
13 END;
14 /
数字或值错误 : 数值精度太高
PL/SQL procedure successfully completed
SQL>
2.RAISE_APPLICATION_ERROR
功能用来自定义错误消息
1.EXCEPTION_INT编译指示
功能是将某命名异常同某特定Oracle错误关联起来.
主用用来捕捉某特定异常错误,而不是通过OTHERS来处理.
语法:PROGMA EXCEPTION_INIT(exception_name,oracle_error_number)
SQL>
SQL> DECLARE
2 expa EXCEPTION;
3 PRAGMA EXCEPTION_INIT(expa,-6502);
4 vn NUMBER(1);
5 BEGIN
6 vn:=24;
7 EXCEPTION
8 WHEN expa THEN
9 dbms_output.put_line('数字或值错误 : 数值精度太高');
10 WHEN OTHERS THEN
11 dbms_output.put_line(SQLCODE);
12 dbms_output.put_line(substr(SQLERRM,1,100));
13 END;
14 /
数字或值错误 : 数值精度太高
PL/SQL procedure successfully completed
SQL>
2.RAISE_APPLICATION_ERROR
功能用来自定义错误消息
语法: RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors])
error_number:-20 000到-20 999之间的值
error_message:必须少于512个字符
keep_errors:布尔值.为真则新的错误将被加到已存在的错误清单中(如果已存在的话),为假(默认值)则新的错误将代替当前的错误清单.
SQL> BEGIN
2 UPDATE t SET a='TEST' WHERE a='12345';
3 IF SQL%NOTFOUND THEN
4 raise_application_error(-20001,'你傻了?知道没有这样的数据还去更新!');
5 END IF;
6 EXCEPTION
7 WHEN OTHERS THEN
8 dbms_output.put_line(substr(SQLERRM,1,100));
9 END;
10 /
ORA-20001: 你傻了?知道没有这样的数据还去更新!
PL/SQL procedure successfully completed
SQL>
3.异常传播
A可执行部分发生的异常
1)如果当前语句块有该异常的处理程序则执行之,控制权交由外层语句块.
当前语句块有该异常的处理程序:
SQL> DECLARE
2 expa EXCEPTION;
3 expb EXCEPTION;
error_number:-20 000到-20 999之间的值
error_message:必须少于512个字符
keep_errors:布尔值.为真则新的错误将被加到已存在的错误清单中(如果已存在的话),为假(默认值)则新的错误将代替当前的错误清单.
SQL> BEGIN
2 UPDATE t SET a='TEST' WHERE a='12345';
3 IF SQL%NOTFOUND THEN
4 raise_application_error(-20001,'你傻了?知道没有这样的数据还去更新!');
5 END IF;
6 EXCEPTION
7 WHEN OTHERS THEN
8 dbms_output.put_line(substr(SQLERRM,1,100));
9 END;
10 /
ORA-20001: 你傻了?知道没有这样的数据还去更新!
PL/SQL procedure successfully completed
SQL>
3.异常传播
A可执行部分发生的异常
1)如果当前语句块有该异常的处理程序则执行之,控制权交由外层语句块.
当前语句块有该异常的处理程序:
SQL> DECLARE
2 expa EXCEPTION;
3 expb EXCEPTION;
剩余7页未读,继续阅读
资源评论
浪迹天涯
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功