問題判別の手引き

SQLCA フィールドの説明


表 2. SQLCA のフィールド
名前1 データ・タイプ フィールド値
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 文字の ID と、その後に製品のバージョン、リリース、 修正レベルを示す 5 桁の数字が続きます。 たとえば SQL07010 は、DB2 ユニバーサル・データベース バージョン 7 リリース 1 修正レベル 0 を意味します。

SQLCODE がエラー条件を示す場合、このフィールドは、 エラーを戻したモジュールを識別します。

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

sqlerrd ARRAY 診断情報を示す 6 個の整変数。 エラーがない場合、通常これらの値は空白となります (区分データベースからの sqlerrd(6) の場合は除く)。
sqlerrd(1) INTEGER 接続が正常に起動された場合に、 アプリケーション・コード・ページからデータベース・コード・ページへの混合文字データ (CHAR データ・タイプ) 変換時に予想される長さの違いの最大値が入ります。 0 または 1 は、データの拡張がなかったことを意味します。 2 以上の値は、データの長さが拡張された可能性があることを表します。 負の値は、縮小された可能性があることを示します。 a

SQL プロシージャーが正常に完了した場合に、 その SQL プロシージャーからの戻り状況値が入っています。

sqlerrd(2) INTEGER

接続が正常に起動された場合に、 データベース・コード・ページからアプリケーション・コード・ページへの混合文字データ (CHAR データ・タイプ) の変換時に、予想される長さの違いの最大値が入ります。 0 または 1 は、データの拡張がなかったことを意味します。 2 以上の値は、データの長さが拡張された可能性があることを表します。 負の値は、縮小された可能性があることを示します。 a SQLCA が 1 つまたは複数のエラーを検出した非アトミック複合 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 が呼び出された場合、0 (下位レベル・クライアントからの 1 フェーズ・コミットの場合)、1 (1 フェーズ・コミットの場合)、2 (1 フェーズ読み取り専用コミットの場合)、3 (2 フェーズ・コミットの場合) が入ります。

sqlerrd(5) INTEGER

次の場合に削除、挿入、または更新された行の総数が入ります。

  • 削除操作が成功した後での、制約の強制実行
  • 活動化されたトリガーから起動された SQL ステートメントの処理

複合 SQL が呼び出された場合、すべてのサブステートメントで、 削除、挿入または更新された行数の累計が入ります。 エラーが検出された場合、このフィールドには負の値が入ります。 これは内部エラー・ポインターです。 CONNECT を呼び出した場合、0 (サーバー認証の場合)、1 (クライアント認証の場合)、2 (DB2 コネクトを使用した認証の場合)、3 (DCE セキュリティー・サービス認証の場合)、255 (認証が指定されていない場合) が入ります。

sqlerrd(6) INTEGER

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

sqlwarn Array それぞれがブランクまたは W を含んでいる警告標識のセット。 複合 SQL が呼び出された場合、 すべてのサブステートメントに設定された警告標識の累計が入ります。
sqlwarn0 CHAR(1) 他のすべての標識がブランクである場合、 ブランクです。少なくとも 1 つの他の標識に W が含まれている場合、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) 将来の利用のために予約済み。

DYN_QUERY_MGMT データベース構成パラメーターが使用可能になっている場合に、 CONNECT が呼び出されて正常に完了すれば E が入ります。

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

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

b
関数の中には、ヌル値が除去されても SQLWARN2 を W に設定しないものがあります。 これは、結果がヌル値の除去に依存していないためです。

関連情報:


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