处理 SQLJ 应用程序中的 SQL 警告

除了 SELECT INTO 语句上的 +100 SQL 错误代码以外,来自数据服务器的警告不会抛出 SQLException。 要处理来自数据服务器的警告,您需要授予程序对 java.sql.SQLWarning 类的访问权。

关于本任务

如果要检索有关警告的特定于数据服务器的信息,那么还需要提供对 com.ibm.db2.jcc.DB2Diagnosable 接口和 com.ibm.db2.jcc.DB2Sqlca 类的程序访问权。

过程

要检索有关警告的特定于数据服务器的信息:

  1. 为该 SQL 子句设置执行上下文。 有关如何设置执行上下文的信息,请参阅“控制在 SQLJ 中执行 SQL 语句”。
  2. 要检查数据服务器发出的警告,请在执行 SQLJ 子句后调用 getWarnings 方法。

    getWarnings 返回 SQL 语句生成的第一个 SQLWarning 对象。 随后的 SQLWarning 对象将链接到第一个对象。

  3. 要使用 IBM® Data Server Driver for JDBC and SQLJSQLWarning 对象中检索数据服务器特定信息,请按照“处理 IBM Data Server Driver for JDBC and SQLJ 下的SQLException”中的说明进行操作。

示例

以下示例说明如何检索带有执行上下文 execCtx 的 SQL 子句的 SQLWarning 对象。 所选语句右边的数字对应于先前描述的步骤。
ExecutionContext execCtx=myConnCtx.getExecutionContext();    1 
                                    // Get default execution context from 
                                    // connection context
SQLWarning sqlWarn;
…
#sql [myConnCtx,execCtx] {SELECT LASTNAME INTO :empname
  FROM EMPLOYEE WHERE EMPNO='000010'};
if ((sqlWarn = execCtx.getWarnings()) != null)               2 
System.out.println("SQLWarning " + sqlWarn);