我想知道oracle中是否有任何方法可以将控件从异常块重定向到当前的开始/结束块 .
以下是代码段 . i 变量循环通过表数据集,我想更新表 i ;如果有任何异常,请转到 exec1 异常块,执行这些操作,然后再次尝试更新表 i .
如果控制转到 exec2 异常,则继续下一次迭代 .
在 exec1 异常中执行步骤后我想要帮助,如何再次尝试更新表(i);所以如果它再次失败,它将在 exec1 异常块中处理 .
FOR i in c_tables
LOOP
BEGIN
---label---
Update (i);
DBMS_OUTPUT.PUT_LINE ('ROWS UPDATED IS: ' || SQL%ROWCOUNT);
EXCEPTION
WHEN exec1 THEN
BEGIN
do_stuff();
goto label;
EXCEPTION WHEN exec2 THEN
do_stuff();
continue;
END;
END;
END LOOP;
1 回答
我试图用斯科特的模式模拟你所拥有的东西 .
如果你把标签移到BEGIN前面,而不是在它之后,你似乎会很好 . 看一看:
如果它是您最初放置的位置,则会引发上述PLS-00375错误 .