Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
用于指定嵌入式 SQL 程序中的错误处理。
WHENEVER { SQLERROR | SQLWARNING | NOTFOUND } GOTO label | STOP | CONTINUE | { C-code; }
label : identifier
WHENEVER 语句用于捕获数据库在处理 SQL 语句时遇到的错误、警告和异常情况。可将此语句放置在嵌入式 SQL 程序中的任何位置,它不生成任何代码。预处理器将在每个连续的 SQL 语句后生成代码。错误操作对 WHENEVER 语句源行中的所有嵌入式 SQL 语句一直保持有效,直到发生下一个具有相同错误条件的 WHENEVER 语句或者直到源文件结束。
错误条件的生效依据是 C 语言源文件的位置,而不是语句的执行时间。
缺省操作为 CONTINUE。
请注意,提供此语句是为了在简单程序中方便使用。多数情况下,检查错误的最简单方法是直接检查 SQLCA (SQLCODE) 的 sqlcode 字段。这种情况下不使用 WHENEVER 语句。事实上,所有 WHENEVER 语句均使预处理器在每个语句后生成 if ( SQLCODE ) 测试。
无。
SQL/2008 使用 WHENEVER 语句编写的异常条件声明是 SQL/2008 标准的核心功能。该标准使用关键字 SQLEXCEPTION 而不是 SQLERROR。在 WHENEVER 语句中直接包含 C 代码而不是仅包含语句标签的能力,是服务商扩充。STOP 操作也是服务商扩充。
以下是 WHENEVER 语句的示例:
EXEC SQL WHENEVER NOTFOUND GOTO done; EXEC SQL WHENEVER SQLERROR { PrintError( &sqlca ); return( FALSE ); };