PRAGMA EXCEPTION_INIT用法

如果要处理未命名的内部异常,必须使用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

1.        在PL/SQL 块的定义部分定义异常情况:

<异常情况> EXCEPTION;


2.        将其定义好的异常情况,与标准的ORACLE错误联系起来,使用EXCEPTION_INIT语句:

      PRAGMA EXCEPTION_INIT(<异常情况>, <错误代码>);

3.        在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。

【转载】 http://hi.baidu.com/ziyou121/blog/item/6c15667e066ab53f0cd7da9e.html

猜你喜欢

转载自hck.iteye.com/blog/1189140