如果省略 WITH RESUME 关键字,则在出现异常后执行的下一个语句取决于 ON EXCEPTION 语句的位置,如以下应用场合所描述的:
- 如果 ON EXCEPTION 语句在具有 BEGIN 和 END 关键字的语句块中,则在对该 BEGIN ... END 块后的第一个语句(如果有)恢复执行,即,在
ON
EXCEPTION 语句的作用域后恢复。
- 如果 ON EXCEPTION 语句在循环(FOR 、WHILE 、FOREACH)内部,则跳过循环的其余部分,并在循环的下一迭代时恢复执行。
- 如果没有语句块,而仅有 SPL 例程包含 ON EXCEPTION 语句,那么该例程执行不带参数的 RETURN 语句,返回成功状态而不返回值。
如果在语句块执行期间出现错误,要防止无限循环,则搜索另一个 ON EXCEPTION 语句以俘获错误不包括搜索当前的 ON EXCEPTION 语句。