SQL 解説書

SQLCA のフィールドの説明


表 35. SQLCA のフィールド
名前110 データ・タイプ フィールドの値
sqlcaid CHAR(8) 'SQLCA' を含む記憶域ダンプの「目印」。 SQL プロシージャー本体の解析から行番号情報が戻される場合、6 番目のバイトは 'L' になります。
sqlcabc INTEGER SQLCA の長さ (136)。
sqlcode INTEGER SQL 戻りコード。 個々の SQL 戻りコードの意味については、 メッセージ解説書 のメッセージの節を参照してください。

コード
意味
0
正常に実行された (1 つ以上の SQLWARN 標識が設定される場合があります)。
正の値
正常に実行されたが、警告状態である。
負の値
エラー状態。
sqlerrml SMALLINT sqlerrmc の長さ標識 (0 〜 70 の範囲)。 0 は、sqlerrmc の値が関係ないことを示します。
sqlerrmc VARCHAR (70) X'FF' で区切られた 1 つまたは複数のトークンが入り、 エラー条件の説明の中の変数を置き換えます。

このフィールドは、正常に接続が完了した場合にも使用されます。

NOT ATOMIC 複合 SQL ステートメントが発行されると、 最大 7 つのエラーに関する情報を含むことができます。

個々の SQL 戻りコードの意味については、 メッセージ解説書 のメッセージの節を参照してください。

sqlerrp CHAR(8) 製品を示す 3 文字の識別子の後に、製品のバージョン、リリース、 およびモディフィケーション・レベルを示す 5 桁の数字が続きます。 たとえば SQL07010 は、DB2 ユニバーサル・データベース バージョン 7 リリース 1 修正レベル 0 を指します。

SQLCODE がエラー条件を示している場合、 そのエラーを戻したモジュールがこのフィールドに示されます。

このフィールドは、正常に接続が完了した場合にも使用されます。

sqlerrd ARRAY 診断情報の提供に使用される 6 個の INTEGER 変数。 これらの値は、 エラーがない場合は通常は空ですが、区分データベースの sqlerrd(6) は例外です。
sqlerrd(1) INTEGER 接続が正常に起動された場合、 アプリケーションのコード・ページからデータベースのコード・ページに変換する際に予想される 混合文字データ (CHAR データ・タイプ) の長さの差の最大値が入ります。 値 0 または 1 は、拡張がないことを示します。 1 より大きい値は、その長さの分の拡張が見込まれることを示します。 負の値は、切り捨てが見込まれることを示します。a

SQL プロシージャーから正常に戻された場合、その SQL プロシージャーからの戻り状況値が入ります。

sqlerrd(2) INTEGER

接続を呼び出して正常に実行した場合、 データベースのコード・ページからアプリケーションのコード・ページに変換する際に予想される 混合文字データ (CHAR データ・タイプ) の長さの差の最大値が入ります。 値 0 または 1 は、拡張がないことを示します。 1 より大きい値は、その長さの分の拡張が見込まれることを示します。 負の値は、切り捨てが見込まれることを示します。 a SQLCA がエラーの発生した NOT ATOMIC 複合 SQL ステートメントの結果である場合、 この値はエラーの発生したステートメントの番号に設定されます。

sqlerrd(3) INTEGER

PREPARE を呼び出して正常に実行した場合は、 戻される行の数の見積もりが入ります。 INSERT、UPDATE、および DELETE を実行した後は、実際に影響を受けた行の数になります。 複合 SQL を呼び出した場合は、すべてのサブステートメント行の累計が入ります。 CONNECT が呼び出され、データベースが更新可能な場合は 1、 データベースが読み取り専用の場合は 2 が入ります。

SQL プロシージャーで CREATE PROCEDURE を呼び出したものの、 SQL プロシージャー本体の解析でエラーが発生した場合、エラーが発生した行番号が入ります。 この場合、有効な行番号を表すために、sqlcaid の 6 バイト目は必ず 'L' になります。

sqlerrd(4) INTEGER

PREPARE を呼び出して正常に実行した場合は、 ステートメントの処理に必要なリソースの相対的なコストの見積もりが入ります。 複合 SQL を呼び出した場合は、 正常に実行されたサブステートメントの数のカウントが入ります。 CONNECT を呼び出した場合は、 下位レベルのクライアントからの 1 フェーズ・コミットなら 0、 1 フェーズ・コミットなら 1、1 フェーズの読み取り専用コミットなら 2、 2 フェーズ・コミットなら 3 が入ります。

sqlerrd(5) INTEGER

以下の両方の結果として削除、挿入、または更新された行の合計数が入ります。

  • 削除操作が正常に実行された後の制約の実施
  • 起動したトリガーから引き起こされた SQL ステートメントの処理

複合 SQL を呼び出した場合は、 すべてのサブステートメントの上記のような行の累計が入ります。 場合によっては、エラーが発生した場合に、 内部エラー・ポインターである負の値が入ります。 CONNECT を呼び出した場合は、サーバーの認証の場合は認証タイプ値 0、 クライアントの認証の場合は 1、DB2 コネクトを使用した認証の場合は 2、 DCE 機密保護サービスの認証の場合は 3、 認証が指定されていない場合は 255 が入ります。

sqlerrd(6) INTEGER

区分データベースの場合、エラーまたは警告が出された区分の区分番号が入ります。 エラーまたは警告が出されなかった場合は、 このフィールドには調整プログラム・ノードの区分番号が入ります。 このフィールドに入る番号は、 db2nodes.cfg ファイルで区分に対して指定されたものと同じです。

sqlwarn 配列 一連の警告標識で、それぞれの標識はブランクか W です。 複合 SQL を呼び出した場合は、 すべてのサブステートメントについての警告標識の累積が入ります。
sqlwarn0 CHAR(1) 他の標識がすべてのブランクの場合はブランク、 1 つでもブランクでない標識があれば W。
sqlwarn1 CHAR(1) ホスト変数への割り当て時にストリング列の値が切り捨てられた場合に W になります。 ヌル終止符が切り捨てられた場合は N になります。

CONNECT または ATTACH が正常に実行され、 その接続の authID が 8 バイトを超える場合は A になります。

sqlwarn2 CHAR(1) 関数の引き数からヌル値が削除された場合、W が入りま す。b
sqlwarn3 CHAR(1) 列の数とホスト変数の数が等しくない場合、W が入ります。
sqlwarn4 CHAR(1) 準備された UPDATE または DELETE ステートメントに WHERE 文節が指定されていない場合に、 W が入ります。
sqlwarn5 CHAR(1) 将来の使用のために予約済み。
sqlwarn6 CHAR(1) 存在しない日付を避けるために日付演算の結果が調整された場合に W が入ります。
sqlwarn7 CHAR(1) 将来の使用のために予約済み。

CONNECT が呼び出されて正常に実行された場合に、 DYN_QUERY_MGMT データベース構成パラメーターが使用可能であれば、'E' が入ります。

sqlwarn8 CHAR(1) 変換できなかった文字が置換文字に置き換えられた場合に W になります。
sqlwarn9 CHAR(1) エラーのある算術式が列関数の処理時に無視された場合に W になります。
sqlwarn10 CHAR(1) SQLCA 内のフィールドのいずれかで、 文字データ値の変換時に変換エラーが起きた場合、W が入ります。
sqlstate CHAR(5) 直前に実行された SQL ステートメントの結果を示す戻りコード。
注:

a
詳細については、 アプリケーション開発の手引き の『複合環境におけるプログラミング』の章の 『文字変換の拡張係数』の節を参照してください。

b
一部の関数では、 ヌル値が除去されても SQLWARN2 が W にならないことがあります。 これは、結果がヌル値の除去によるものでない場合に生じます。

関連情報:


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]