WHENEVER 语句
WHENEVER语句指定了当指定的异常条件发生时执行的主语言语句。
调用 WHENEVER
此语句只能嵌入在应用程序中。 这不是一个可执行语句。 不得在Java™或REXX中指定。
授权 WHENEVER
不需要执行任何操作。
语法 WHENEVER
描述 WHENEVER
NOT FOUND、 SQLERROR子句用于识别异常情况的类型。 SQLWARNING 子句用于识别异常情况的类型。
- NOT FOUND
- 识别导致SQLCODE为 +100 (相当于SQLSTATE代码为 '02000' )的任何条件。
- SQLERROR
- 识别导致SQLCODE为负数的任何条件。
- SQLWARNING
- 识别导致警告状态( SQLWARN0 为W)或导致SQLCODE 为+100 以外的任何条件。
CONTINUE 或 GO TO 子句指定当指定的异常条件类型存在时,要执行的下一个语句。
- CONTINUE
- 指定源程序的下一个连续语句。
- GOTO 或 GOTO 主机标签
- 指定由主机标签标识的语句。 对于主机标签 ,替换为一个单独的标记,可选地在其前面加上冒号。 令牌的形式取决于宿主语言。 例如,在COBOL中,它可以是节名或无限制的段落名。
备注 WHENEVER
WHENEVER语句有三种类型:
- 找不到时
- WHENEVER SQLERROR
- WHENEVER SQLWARNING
应用程序中的每个可执行SQL语句都在每种类型的隐式或显式WHENEVER语句的范围内。 WHENEVER语句的作用域与应用程序中语句的列表顺序有关,与语句的执行顺序无关。
SQL语句在源程序中位于其前一个WHENEVER语句的范围内,且该WHENEVER语句在SQL语句之前指定。 如果在SQL语句前未指定任何类型的WHENEVER语句,则该SQL语句属于该类型隐式WHENEVER语句的范畴,其中 CONTINUE 被指定。 如果在 Fortran 子程序中指定了WHENEVER语句,则其作用域为该子程序,而非源程序。
GET DIAGNOSTICS语句可用于提供额外信息。
例子 WHENEVER
以下语句可以嵌入COBOL程序中。
示例1 :对于任何产生错误的语句,请转到HANDLER标签。
EXEC SQL WHENEVER SQLERROR GOTO HANDLER END-EXEC.示例2 :对于任何产生警告的语句,继续处理。
EXEC SQL WHENEVER SQLWARNING CONTINUE END-EXEC.示例3 :对于任何不返回的语句,请查看ENDDATA标签。
EXEC SQL WHENEVER NOT FOUND GO TO ENDDATA END-EXEC.