WHENEVER 语句

WHENEVER语句指定了当指定的异常条件发生时执行的主语言语句。

调用 WHENEVER

此语句只能嵌入在应用程序中。 这不是一个可执行语句。 不得在Java™或REXX中指定。

授权 WHENEVER

不需要执行任何操作。

语法 WHENEVER

阅读语法图跳过可视化语法图WHENEVER NOT FOUNDSQLERRORSQLWARNING CONTINUEGOTOGO TO:主机标签

描述 WHENEVER

NOT FOUNDSQLERROR子句用于识别异常情况的类型。 SQLWARNING 子句用于识别异常情况的类型。
NOT FOUND
识别导致SQLCODE为 +100 (相当于SQLSTATE代码为 '02000' )的任何条件。
SQLERROR
识别导致SQLCODE为负数的任何条件。
SQLWARNING
识别导致警告状态( SQLWARN0 为W)或导致SQLCODE 为+100 以外的任何条件。
CONTINUEGO TO 子句指定当指定的异常条件类型存在时,要执行的下一个语句。
CONTINUE
指定源程序的下一个连续语句。
GOTOGOTO 主机标签
指定由主机标签标识的语句。 对于主机标签 ,替换为一个单独的标记,可选地在其前面加上冒号。 令牌的形式取决于宿主语言。 例如,在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.