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形式の説明については、 のコードを参照してください。
アプリケーションが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® のすべてのリレーショナルデータベース製品では、コード体系は同じです。