这个问题不重复。 (我使用的是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;
根据上面的光标,只要在插入过程中发生错误,就会在输出上打印错误并停止执行。 而它应该继续循环。
我尝试在循环内添加异常块但仍无法正常工作
答案 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;