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® リレーショナル・データベース・プロダクトと同じです。