ホスト言語アプリケーションでのエラー条件と警告条件の検出と処理
実行可能な SQL ステートメントを含むアプリケーション・プログラムは、 SQLCODE または SQLSTATE の値のいずれかを使用して、 SQL ステートメントからの戻りコードを処理することができます。
アプリケーションでこれらの値にアクセスするには、
2 つの方法があります。
- SQLCA と呼ばれる構造体を組み込む。 SQLCA には SQLCODE という名前の整変数と、 SQLSTATE という名前の文字ストリングが含まれています。 REXX では、SQLCA は自動的に提供されます。 他の言語では、INCLUDE SQLCA ステートメントを使用することによって、 SQLCA を入手することができます。
- プリコンパイル・オプションとして LANGLEVEL SQL92E が指定されている場合は、 プログラムの SQL 宣言セクションに SQLCODE または SQLSTATE という名前の変数を宣言することができます。 これらの値がいずれも SQL 宣言セクションに宣言されていない場合は、 プログラムの別のロケーションで SQLCODE という名の変数が宣言されているものと想定されます。 LANGLEVEL SQL92E を使用する場合は、プログラムに INCLUDE SQLCA ステートメントがあってはなりません。
SQLCODE は、各 SQL ステートメントの実行後に、
データベース・マネージャーによって設定されます。
すべてのデータベース・マネージャーは、
次のように ISO/ANSI SQL 標準規格に準拠しています。
- SQLCODE = 0 で SQLWARN0 がブランクの場合、実行は成功しました。
- SQLCODE = 100 の場合、"データが見つかりませんでした"。例えば、カーソルが結果表の最後の行より後に設定されていたために、 FETCH ステートメントからデータが戻されませんでした。
- SQLCODE > 0 で、100 ではない場合、実行は警告付きで成功しました。
- SQLCODE = 0 で SQLWARN0 = 'W' の場合、 実行は成功しましたが、1 つ以上の警告標識がセットされました。
- SQLCODE < 0 の場合、実行は不成功でした。
0 と 100 以外の SQLCODE の値の意味は、製品によって異なります。
SQLSTATE は、各 SQL ステートメントの実行後に、 データベース・マネージャーによって設定されます。 アプリケーション・プログラムは、SQLCODE ではなく、 SQLSTATE をテストすることによって SQL ステートメントの実行を検査することができます。 SQLSTATE は、共通エラー条件に関する共通コードを示します。 アプリケーション・プログラムが 特定のエラーまたは特定クラスのエラーの有無をテストできます。 コード体系は、IBM® のどのデータベース・マネージャーでも同じであり、 ISO/ANSI SQL92 標準規格に基づいています。