GOTO 关键字

当发生指定的异常时,使用 GOTO 子句来将控制传送到该标签标识的语句。 对于像 ESQL/C 这样的嵌入的 SQL 语言的此特性,GOTO 和 GO TO 关键字是符合 ANSI 的语法。 下列 GBase 8s ESQL/C 代码片断展示在每一次发生 NOT FOUND 条件时,WHENEVER 语句将控制传送到标签 missing
query_data()
          ...
          EXEC SQL WHENEVER NOT FOUND GO TO missing;
   ...
        EXEC SQL fetch lname into :lname;
        ...
        missing:
        printf("No Customers Found\n");

在 WHENEVER GOTO 语句的作用域内,您必须在包含 SQL 语句的每一例程中定义打了标签的语句。如果您的程序包含多个用户定义的函数,则您可能需要包括打了标签的语句及其在每一函数中的代码。

如果预处理器在 WHENEVER ... GOTO 语句的作用域内遇到 SQL 语句,但在没有指定的标签的例程内,则预处理器试图插入与该打了标签的语句相关联的代码,但当它不可找到该标签时,会生成错误。

要纠正此错误,或在每一 UDR 中放置一个带有相同的标签名称的打了标签的语句,或发出另一 WHENEVER 语句来重置该错误条件,或使用 CALL 子句来调用单独的函数。