检测和处理主机语言应用程序中SQL语句的错误和警告条件

可以使用SQLCODE或SQLSTATE主机变量或SQLCA来检查主机语言应用程序中的错误和警告条件。

每种主机语言都提供了一种处理诊断信息的机制。

  • 在汇编语言、C语言、 COBOL、 Fortran 和 PL/I 中,包含可执行SQL语句的应用程序必须至少提供以下内容之一:
    • 一个名为SQLCA的结构,可通过INCLUDE SQLCA语句提供
    • 一个名为 SQLSTATE ( Fortran 中的 SQLSTT )的独立CHAR(5)(C中的CHAR(6))变量
    • 一个名为 SQLCODE ( Fortran 中的 SQLCOD) 的独立整数变量
  • 在Java™中,对于错误情况,可以使用 JDBC SQLException类的 getSQLState 方法获取SQLSTATE,使用 getErrorCode 方法获取SQLCODE。
  • 在REXX中,SQLCA会自动生成。

在程序中定义独立的SQLCODE和SQLSTATE主机变量还是SQLCA,取决于您选择的 Db2 预编译器选项。

如果应用程序使用 Db2 ODBC 并调用 SQLGetSQLCA 函数,则只需包含一个SQLCA。 否则,所有成功或错误的通知都会附带各种函数调用的返回代码。

当您指定STDSQL(YES)(表示符合SQL标准)时,不应定义SQLCA。 SQLCODE的独立变量必须在程序的DECLARE SECTION中为合法的主变量。 当没有为SQLSTATE定义变量时,也可以在DECLARE SECTION之外声明。 必须在DECLARE SECTION中声明SQLSTATE的独立变量。 它不能被声明为结构元素。

使用独立的SQLSTATE来符合SQL 2003核心标准。 当您指定STDSQL(NO)(表示符合 Db2 规则)时,必须明确包含SQLCA才能访问SQLSTATE和SQLCODE信息。