我试图执行一个游标,并希望它完成循环,即使有一些异常.
我想要做的是“捕获”所有异常,并且可能记录某些事情或什么也不做,然后返回流程.以下是代码的外观:
FOR line IN my_cursor LOOP begin if<condition> then GOTO pass; else <<do_something>> exception when others then sys.dbms_output.put_line('say something'); end if; <<pass>> null; end END LOOP;
脚本没有编译.
异常可能存在一些语法错误,但我也不太了解语义.就像我不确定你是否可以在处理异常后返回执行流程.
p.s:DB为10g,并且没有CONTINUE.因此使用GOTO.
将您想要在循环中执行的代码放在它自己的块中,然后您可以使用该块异常部分来处理循环迭代期间的任何问题.
原文链接:https://www.f2er.com/oracle/205195.html一旦处理了该迭代的异常,就会开始下一个循环迭代
例如.:
for line in my_cursor loop begin <<do_something>> exception <<do_exception_processing>> end; end loop;
为了进一步说明这一点,在下面的例子中,我声明了一个异常类型的局部变量.我循环遍历数字1到10,在第二次循环迭代期间,if语句为true,处理传递给异常处理程序.处理完异常后,循环的下一次迭代开始.
begin for i in 1 .. 10 loop declare my_exception exception; begin if i = 2 then -- if you need to do some processing then you would enter it -- here and then when you want to enter the exception section -- you would add the line below raise my_exception; end if; exception when my_exception then dbms_output.put_line('in exception section'); end; end loop; end;