Oracle认证辅导:PL/SQL的异常处理
来源:优易学  2011-11-16 16:08:47   【优易学:中国教育考试门户网】   资料下载   IT书店

 

 begin

  dbms_output.put_line( ' 第二 begin end;' );

  exception

  when   no_data_found then

  dbms_output.put_line( 'aaaaaaa' );

  end;

  exception

  whenothersthen

  dbms_output.put_line( ' 最外层 exception...' );

  end;

  以上程序中运行时输出的结果如下:

  v_temp--> 龙口 ..  sqlerrm-->ORA-01403: no data found

  第二层 begin end;

  结果说明在第一个 begin end; 执行时发了异常,就执到行该层的 exception 来处理异常,异常处理完后执行第二个 begin end; 的代码,当你把第一层 begin end; 中的异常处理部分注释掉后,输出的结果如下 :

  最外层 exception...

  这结果说明了,在第一个 begin end; 中因为没有异常处理模块,所以程序跳到上一层寻找异常处模块来处理异常,同第一个 begin end; 同一个层次的第二个 begin end; 模块的代码就不会执行,如果在最外层也找不到异常处理模块就执行默认的异常处理模块。

  处理用户自定义异常

  用户自定义异常,像其它 pl/sql 一亲友,显式地声明用户自定义异常。可以使用 EXCEPTION 关键字指定这些异常的数据类型。其语法如下 :

  1 、定义自定义异常

  Exception_name EXCEPTION;

  注意:必须用 EXCEPTION 关键字定义用户自定义异常

  用户自定义异常不与任何错误代码或错误文本关联

  2 、使用 RAISE 语句引发用户自定义异常

  Raise  exception_name;

  例子 :

  Declare

  Examp_exception  EXCEPTION;

  Begin

  If  ( 条件 )  then

  Raise examp_exception;

  End if;

  Exception

  When examp_exception then

  ……

  End;

  处理声明和异常处理部分引发的异常

  1、  在声明部分引发的异常

  在声明部分引发的异常必须在其紧接着的封闭块( begin ..end )中的相关处理程序中进行处理。如果紧接着的封闭块中不存在该处理程序,控制就会转到有该处理程序的第一个封闭块。

  如

  Declare

  V_num number(2) :=100

  Begin

  Null;

  ..

  Exception

  when value_error then

  null;

  when others then

  null;

  End;

上一页  [1] [2] [3] [4] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训