创建和使用 SPL 例程 / 异常处理 |
ON EXCEPTION 语句的作用域从紧跟在 ON EXCEPTION 语句之后的语句扩展,并结束于在其中发出 ON EXCEPTION 语句的语句块的末尾。如果 SPL 例程未包括显式的语句块,则作用域为该例程中所有后续的语句。
对于在 IN 子句中指定的异常(或对于所有异常,如果未指定 IN 子句的话),ON EXCEPTION 语句的作用域包括同一语句块内跟在 ON EXCEPTION 语句之后的所有语句。如果在那个块内嵌套其他语句块,则该作用域还包括跟在 ON EXCEPTION 语句之后的嵌套的语句块中的所有语句,以及在那些嵌套的块内嵌套的语句块中的任何语句。
图: ON EXCEPTION 语句的控制作用域。
CREATE PROCEDURE scope() DEFINE i INT; . . . BEGIN -- 开始语句块 A . . . ON EXCEPTION IN (201) -- 执行操作 a201 END EXCEPTION BEGIN -- 嵌套的语句块 aa -- 执行操作,a201 在此有效 END BEGIN -- 嵌套的语句块 bb -- 执行操作,a201 在此有效 END WHILE i < 10 -- 执行某操作,a201 在此有效 END WHILE END -- 语句块 A 的末尾 BEGIN -- 开始语句块 B -- 执行某操作 -- a201 在此 NOT 有效 END END PROCEDURE;