求教pl/sql 循环中出现异常捕获异常并继续执行循环的方法

解决方案 »

  1.   

    SQL> set serveroutput on;
    SQL> 
    SQL> DECLARE
      2    x INT;
      3  BEGIN
      4    FOR i IN 1 .. 10 LOOP
      5      --将发生异常的语句使用begin..exception..end包围
      6      BEGIN
      7        x := 'aaa'; --产生异常ORA-06502
      8      EXCEPTION
      9        WHEN OTHERS THEN
     10          dbms_output.put_line('检测到异常!,异常码:' || SQLCODE);
     11      END;
     12      --继续执行
     13      dbms_output.put_line('继续:i=' || i);
     14    END LOOP;
     15  END;
     16  /
     
    检测到异常!,异常码:-6502
    继续:i=1
    检测到异常!,异常码:-6502
    继续:i=2
    检测到异常!,异常码:-6502
    继续:i=3
    检测到异常!,异常码:-6502
    继续:i=4
    检测到异常!,异常码:-6502
    继续:i=5
    检测到异常!,异常码:-6502
    继续:i=6
    检测到异常!,异常码:-6502
    继续:i=7
    检测到异常!,异常码:-6502
    继续:i=8
    检测到异常!,异常码:-6502
    继续:i=9
    检测到异常!,异常码:-6502
    继续:i=10
     
    PL/SQL procedure successfully completed
     
    SQL> 
      

  2.   

    理应出现异常,终止程序执行:
    ...
    when others then
     dbms_output.put_line(sqlerrm);
    ...