WEB开发网
开发学院数据库Oracle 全面解析Oracle developer的异常处理机制 阅读

全面解析Oracle developer的异常处理机制

 2008-11-17 12:59:20 来源:WEB开发网   
核心提示: value_error ora-06502 -6502 在转换字符类型,截取或长度受限时,全面解析Oracle developer的异常处理机制(2),会发生该异常,如一个字符分配给一个变量,异常的名字由EXCEPTION关键字引入: reserved_loaned Exception 产

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

产生异常后,控制传给了子程序的异常部分,将异常转向各自异常控制块,必须在代码中使用如下的结构处理错误:

上一页  1 2 3 4 5  下一页

Tags:全面 解析 Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接