游标中的异常处理

时间:2015-07-06 12:50:10

标签: oracle exception exception-handling cursor

这个问题不重复。 (我使用的是oracle 10g)

我搜索了很多,但我的问题似乎不同

我有关注光标

DECLARE  
   -- Some declarations
   --
CURSOR C1 IS
   -- some select statements
Begin
    for r in c1 loop

        -- Insert queries
         DBMS_OUTPUT.PUT_LINE('INSERTED records');
    End loop;

EXCEPTION WHEN others THEN
           dbms_output.put_line('error' || SQLERRM);
END;

根据上面的光标,只要在插入过程中发生错误,就会在输出上打印错误并停止执行。 而它应该继续循环。

我尝试在循环内添加异常块但仍无法正常工作

1 个答案:

答案 0 :(得分:3)

然后你必须在de loop中使用另一个begin - exception - end。 像这样的东西。

DECLARE  
   -- Some declarations
   --
CURSOR C1 IS
   -- some select statements
Begin
    for r in c1 loop

        BEGIN

            -- Insert queries
            DBMS_OUTPUT.PUT_LINE('INSERTED records');
        EXCEPTION
            WHEN OTHERS 
            THEN
               dbms_output.put_line('error in LOOP' || SQLERRM);
        END;
    End loop;

EXCEPTION WHEN others THEN
       dbms_output.put_line('error' || SQLERRM);
END;