全面解析Oracle developer的非常处理机制-入门底子[Oracle防范]
本文“全面解析Oracle developer的非常处理机制-入门底子[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Oracle developer以其快速的数据处理开辟而闻名,其非常处理机制也是对比完善,不可小觑.
1、 非常的长处
假如没有非常,在程序中,该当查抄每个号令的成功还是失利,如
BEGIN SELECT ... -- check for ’no data found’ error SELECT ... -- check for ’no data found’ error SELECT ... -- check for ’no data found’ error |
这种实现的办法缺陷在于错误处理没有与正常处理脱离,可读性差,利用非常,可以便利处理错误,并且非常处理程序与正常的事件逻辑脱离,提高了可读性,如
BEGIN SELECT ... SELECT ... SELECT ... ... EXCEPTION WHEN NO_DATA_FOUND THEN -- catches all ’no data found’ errors |
2、 非常的分类
有两种范例的非常,一种为内部非常,一种为用户自定义非常,内部非常是履行期间返回到PL/SQL块的ORACLE错误或由PL/SQL代码的某操作惹起的错误,如除数为零或内存溢出的情形.用户自定义非常由开辟者显示定义,在PL/SQL块中传送信息以掌握关于利用的错误处理.
每当PL/SQL违反了ORACLE原则或超越了系统依靠的原则就会隐式的产生内部非常.因为每个ORACLE错误都有一个号码并且在PL/SQL中非常通过名字处理,ORACLE供应了预定义的内部非常.如SELECT INTO 语句不返回行时产生的ORACLE非常NO_DATA_FOUND.关于预定义非常,现将最常用的非常摆列以下:
exception oracle error sqlcode value condition
no_data_found ora-01403 +100 select into 语句没有符合条件的记录返回
too_mang_rows ora-01422 -1422 select into 语句符合条件的记录有多条返回
dup_val_on_index ora-00001 -1 关于数据库表中的某一列,该列已经被限制为唯一索引,程序试图存储两个反复的值
value_error ora-06502 -6502 在转换字符范例,截取或长度受限时,会发生该非常,如一个字符分配给一个变量,而该变量声明的长度比该字符短,就会引发该非常
storage_error ora-06500 -6500 内存溢出
zero_divide ora-01476 -1476 除数为零
case_not_found ora-06592 -6530 关于挑选case语句,没有与之相匹配的条件,同时,也没有else语句捕捉其他的条件
cursor_already_open ora-06511 -6511 程序试图翻开一个已经翻开的游标
timeout_on_resource ora-00051 -51 系统在等候某一资源,时间超时
假如要处理未命名的内部非常,必须利用OTHERS非常处理器或PRAGMA EXCEPTION_INIT .PRAGMA由编译器掌握,大概是关于编译器的注释.PRAGMA在编译时处理,而不是在运行时处理.EXCEPTION_INIT奉告编译器将非常名与ORACLE错误码结合起来,这样可以通过名字引用肆意的内部非常,并且可以通过名字为非常编写一得当的非常处理器.
在子程序中利用EXCEPTION_INIT的语法以下:
PRAGMA EXCEPTION_INIT(exception_name, -Oracle_error_number); |
在该语法中,非常名是声明的非常,下例是其用法:
DECLARE deadlock_detected EXCEPTION; PRAGMA EXCEPTION_INIT(deadlock_detected, -60); BEGIN ... -- Some operation that causes an ORA-00060 error EXCEPTION WHEN deadlock_detected THEN -- handle the error END; |
关于用户自定义非常,只能在PL/SQL块中的声明部份声明非常,非常的名字由EXCEPTION关键字引入:
reserved_loaned Exception |
产生非常后,掌握传给了子程序的非常部份,将非常转向各自非常掌握块,必须在代码中利用以下的构造处理错误:
Exception When exception1 then Sequence of statements; When exception2 then Sequence of statements; When others then |
以上是“全面解析Oracle developer的非常处理机制-入门底子[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |