为什么即使定义了未处理的用户定义异常?

时间:2014-02-14 11:33:38

标签: oracle plsql

尝试运行此代码:

1      declare
2       hq exception;
3       ll exception;
4       nom number;
5       cursor pq is select count(*) as units from test1;
6       hh  pq%ROWTYPE;
7      begin
8          open pq;
9          fetch pq into hh;
10          nom := hh.units;
11          if nom >1 then
12              RAISE hq;
13          else
14              RAISE ll;
15          end if;
16      exception
17          when hq then
18             raise_application_error (-20501 , 'error1');
19          when ll then
20             RAISE_APPLICATION_ERROR (-20500 , 'error2');
21   end;
abc@.US.ORACLE.COM>/
    declare
*
ERROR at line 1:
ORA-20501: error1
ORA-06512: at line 18
ORA-06510: PL/SQL: unhandled user-defined exception

为什么我在第1行收到此错误?以及未处理的用户定义的位置 例外?异常处理程序hq和ll在异常部分中定义。 我哪里错了?使用Oracle 9iR2 感谢

1 个答案:

答案 0 :(得分:2)

您在异常处理程序(raise_application_error)中自己引发了用户定义的错误。您的代码不会处理此用户定义的错误,因此会抛出未处理的用户定义的异常。