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

 

  发生异常时,如果程序需要继续执行,则需要执行一下以个步骤:

  1、  显式或隐式地引发异常

  2、  对已经引发的异常, ….

  3、  异常处理程序的代码执行以后,程序执行就会相应的恢复或终止

  4、  如果在整个程序中都没定义异常处理程序,程序就会在引发异常的位置终止,引发异常的执行点之后代码就得不到执行。

  create or replace procedure

  p1 is

  v_temp varchar2( 200 );

  begin

  select  al_name into v_temp from addr_alias where al_id= 'aaa3' ;

  dbms_output.put_line( 'sfsafdsafasdfdfsa' );

  end ;

  在以上代码中,执行 select 语句是出现异常,不执行 dbms_output 语句

  create or replace procedure

  p1 is

  v_temp varchar2( 200 );

  begin

  select  al_name into v_temp from addr_alias where al_id= 'aaa3' ;

  dbms_output.put_line( 'sfsafdsafasdfdfsa' );

  EXCEPTION  when NO_DATA_FOUND then

  dbms_output.put_line(sqlerrm);

  end ;

  以上代码加了了异常处理,执行时输出 :

  ORA-01403: no data found

  异常信息,说明在程序在 select 出现异常就跳转到异常处理处,执行异常处理程序,但并没有执行 dbms_output.put_line(‘afasfads’); 语句输出信息,异常出现 — 》处理异常 — 》结束运行。

  create or replace procedure

  p1 is

  v_temp varchar2( 200 );

  begin

  select  al_name into v_temp from addr_alias where al_id= '123456789' ;

  dbms_output.put_line( 'sfsafdsafasdfdfsa' );

  EXCEPTION

  when NO_DATA_FOUND then

  dbms_output.put_line(sqlerrm);

  whenothersthen

  dbms_output.put_line( 'others exception--->' ||sqlerrm);

  end ;

  以上代码执行输出结果是 :

  ORA-01403: no data found

  和上一个代子一样,这例子说明在多个异常体里,只有一个异常被执行了。

  以上例子都是程序运行时出现异常,而停止运行。

  处理异常后继续执行

  create or replace procedure p2

  is

  v_temp varchar2( 200 );

  begin

  begin

  select  al_name into v_temp from addr_alias where al_id= '123456789' ;

  dbms_output.put_line( 'ssssskkddd' );

  exception  when no_data_found then

  select  al_name into v_temp from addr_alias where al_id= '3' ;

  dbms_output.put_line( 'v_temp-->' ||v_temp|| '  sqlerrm-->' ||sqlerrm);

  end ;

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

责任编辑:小草

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