SQL コード

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

SQLCODE

SQLCODEの値は、各ステートメントが実行されるたびに Db2 によって設定され、以下の表に示されている。

SQLCODE 値 意味 SQLSTATE 説明
SQLCODE = 0 SQLWARN0 が空白の場合、成功した実行。

SQLWARN0 = 'W' の場合、警告付きで正常に実行されたことを意味します。

000
SQLCODE = 100 データが見つかりません。 例えば、カーソルが結果表の最後の行の後ろに位置していた ために、FETCH ステートメントがデータを戻さなかった場合などです。 +100
SQLCODE > 0 かつ not = 100 警告付きで正常に実行。 +エスキューエルコード番号
SQLCODE < 0 実行は成功しませんでした。 - エスキューエルコード番号

Db2 12 が発行する可能性のあるSQLコードのPDF形式の説明については、 PDFファイルアイコン のコードを参照してください。

アプリケーションがSQLコードを受信する方法

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

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

アプリケーション・プログラムが SQLCA または独立型変数のいずれを提供するかに関係なく、各 SQL ステートメントの実行後に Db2 によって SQLCODE が設定されます。

SQLコードメッセージのテキスト内のトークン

このセクションでは、SQL 戻りコードのメッセージ・テキストのイタリック体で表された句は、SQLCA の SQLERRMC フィールドに戻されるトークンと一致します。 Db2 が複数のトークンを返す場合、それらはメッセージテキストに現れた順番にSQLERRMCに順次表示されます。 変更の開始SQLCAのSQLERRMCフィールドは70バイトに制限されているため、メッセージトークンには最大70バイトが返されます。 メッセージトークンの完全な値を取得するには、GET DIAGNOSTICS 文を DB2 メッセージトークンの完全な値を取得するには、_ORDINAL_TOKEN_nキーワードを使用します。変更の終わり

トークンが特定のエラーのインスタンスに適用できない、または利用できない場合もあります*N代わりに返されます。

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

SQLSTATE

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

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