DB2 Version 9.7 for Linux, UNIX, and Windows

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 SQLJ 使用時に、SQLWarning オブジェクトからデータ・サーバー固有の情報を取得するには、『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);