SQL コード

Db2® は、SQL ステートメント実行時にステートメントの実行に関する情報を戻します。この情報には、SQL 戻りコード (SQLCODE) および SQLSTATE が含まれています。それらは、ステートメントの実行が成功したかどうかを示します。

実行可能な SQL ステートメントを含むアプリケーション・プログラムは、以下のいずれかを行う必要があります。

  • SQLCODE と SQLSTATE (FORTRAN では SQLCOD と SQLSTA) を独立のホスト変数として宣言する。STDSQL(YES) プリコンパイラーまたは SQL ステートメント・コプロセッサー・オプションを指定した場合、これらのホスト変数は戻りコードを受け取るため、プログラムに SQLCA を組み込まないでください。
  • SQLCA という名前の構造を指定する。SQLCA には、他の状況情報のほかに、SQLCODE および SQLSTATE も含まれます。 SQLCA は、INCLUDE SQLCA ステートメントを使用して指定できます。DSNTIAR サンプル・サブルーチンをアプリケーション・プログラムから呼び出して SQLCA の内容を書式設定するか、または自分で SQLCA からフィールドを検索できます。

このセクションでは、SQL 戻りコードのメッセージ・テキストのイタリック体で表された句は、SQLCA の SQLERRMC フィールドに戻されるトークンと一致します。Db2 がいくつかのトークンを戻した場合、メッセージ・テキストに現れる順序に従って、SQLERRMC に順に示されます。

場合によって、発生した特定のエラーに対してトークンが適用可能または利用可能でないことがあり、 代わりに *N が戻されます。

トークンは、Db2 上で関連付けられているオブジェクトの名前ではなく、アクセラレーター上のオブジェクトの名前を指す場合があります。

SQLCODE

アプリケーション・プログラムが SQLCA または独立型変数のいずれを提供するかにかかわりなく、SQL ステートメントを実行すると、 Db2 が SQLCODE をセットします。 Db2 は、次のように ISO/ANSI SQL 標準に従います。

  • SQLCODE=0 の場合、実行は正常に行われました。
  • SQLCODE>0 の場合、実行は正常に行われましたが、警告が出されています。
  • SQLCODE<0 の場合、実行は失敗しました。
  • SQLCODE=100 の場合、「データなし」状態が検出されました。 例えば、 カーソルが結果表の最後の行より後に置かれていた場合、FETCH ステートメント は「データなし」を戻します。

SQLSTATE

SQL ステートメントの実行後には、Db2 により SQLSTATE もセットされます。 したがって、アプリケーション・プログラムでは、SQLCODE の代わりに SQLSTATE を テストすることによって、SQL ステートメントの実行を検査することができます。 SQLSTATE (FORTRAN では SQLSTT) は、SQLCA 内の 5 バイトの文字ストリング変数です。

SQLSTATE は、アプリケーション・プログラムに、 共通エラー条件についての共通コードを提供します (SQLSTATE の値は、 エラーまたは警告が製品固有のものである場合に限り、 製品固有の値となります)。さらに SQLSTATE は、 アプリケーション・プログラムが特定のエラーまたは エラーのクラスをテストできるように設計されています。 コード体系は、すべて の IBM® リレーショナル・データベース・プロダクトと同じです。