使用 ON EXCEPTION 语句指定操作,这些操作是在语句块的执行期间对任何错误或对一个或多个指定错误的列表采取的。
语法
元素 |
描述 |
限制 |
语法 |
error_data_var |
SPL 变量,用于接收由 SQL 错误或由用户定义的异常返回的字符串 |
必须是字符类型以接收错误消息。必须在当前的语句块中有效。 |
标识符 |
error_number |
SQL 错误号或由将被捕获的
RAISE EXCEPTION 语句定义的号码
|
必须是整数类型。在当前的语句块中必须有效。 |
文字的数值 |
ISAM_error_var |
SPL 变量,接收出现的异常的 ISAM 错误号 |
同 error_number |
标识符 |
SQL_error_var |
SPL 变量,接收出现的异常的 SQL
错误号
|
同 ISAM_error_var |
标识符 |
用法
ON EXCEPTION 语句与 RAISE EXCEPTION 语句一起提供 SPL 的错误俘获和错误恢复机制。ON EXCEPTION 可以在 SPL
例程执行时指定您想要捕获的错误,并指定当前语句块中发生错误时要采取的操作。ON EXCEPTION 语句可以指定 IN 子句中的错误号列表,或可以不包括 IN 子句。如果省略
IN
子句,则俘获所有错误。
语句块可以包括多个 ON EXCEPTION 语句。被俘获的异常可以是系统定义的也可以是用户定义的。
ON EXCEPTION 语句的作用域是包含它的语句块,以及嵌套在语句块中的其它语句块,除非其中之一嵌套的语句块提供了覆盖外部语句的 ON EXCEPTION 语句。
当设陷阱捕捉到异常时,会清除错误状态。
如果您指定某个变量来接收 ISAM 错误,但不存在跟随的 ISAM 错误,则将零(0)指定给该变量。如果指定某个变量来接收错误文本,但不存在错误文本,则该变量存储空字符串。
触发器操作中不支持 ON EXCEPTION
当从以下调用上下文中的 SPL 例程发出时,ON EXCEPTION 语句无效:
- 在触发例程中
- 在表的触发器的 Action 子句或 Correlated Action 子句中
- 在视图上的 INSTEAD OF 触发器的 Action 子句中。
当 UDR 在这些上下文中包含 ON EXCEPTION ,数据库服务器忽略 ON EXCEPTION 语句。