SQLCA フィールドの説明

大部分は、COBOL、C、PL/I、およびアセンブラーは SQLCA フィールドに対して同じ名前を使用していますが、FORTRAN は異なる名前を使用します。 ただし、C、PL/I、およびアセンブラーで COBOL と異なる名前も、1 つだけあります。

下表の名前は、SQL INCLUDE ステートメントによって提供される名前です。

表 1. SQLCA のフィールド
アセンブラ、
COBOL、または
PL/I Name

C
名前

Fortran
氏名

データ
の種類


目的
SQLCAID sqlcaid 使用されません。 CHAR(8) ストレージ・ダンプ用の目印。テキスト「SQLCA」が入っています。 動的ステートメントまたはネイティブ SQL プロシージャーの構文解析から行番号情報が戻された場合、6 番目のバイトは「L」。 外部 SQL プロシージャーを処理した場合、6 番目のバイトは設定されない。
SQLCABC sqlcabc 使用されません。 INTEGER SQLCA の長さ 136 が入る。
SQLCODE (注 1 を参照) SQLCODE SQLCOD INTEGER SQL 戻りコードが入る。 (注 2 を参照)
コード
平均値
0
正常な実行 (ただし、警告メッセージが出ている可能性もある)。
正の値
正常に実行されたが、警告条件または他の情報が出される。
負の値
エラー状態。
SQLERRML
(注3参照)
sqlerrml
(注3参照)
SQLTXL SMALLINT SQLERRMC の長さ標識 (0 から 70 の範囲)。0 は、SQLERRMC の値が適切でないことを意味します。
SQLERRMC
(注3参照)
sqlerrmc
(注3を参照)
SQLTXT VARCHAR(70) X'FF' で分けた 1 つ以上のトークンを含む。このトークンはエラー条件の記述において変数に置き換わる。 これには 切り捨てられたトークンが含まれていることもあります。 メッセージ長が 70 バイトの場合は、切り捨てが行われた可能性があることを示している。
SQLERRP sqlerrp SQLERP CHAR(8) プロダクト・シグニチャー、およびエラーの場合は、エラーを検出した モジュール名などの診断情報を提供する。 いずれの場合も、最初の3文字は「DSN」です。 Db2 for z/OS® の場合。
SQLERRD(1) sqlerrd[0] SQLERR(1) INTEGER センシティブ静的カーソルの場合は、カーソル位置が最終行よりも後にあるとき (つまり SQLCODE が +100 と等しいとき) に結果表に行数が入る。

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

SQLERRD(1) には内部エラー・コードが入ることもある。

SQLERRD(2) sqlerrd[1] SQLERR(2) INTEGER センシティブ静的カーソルの場合は、カーソル位置が最終行よりも後にあるとき (つまり SQLCODE が +100 と等しいとき) に結果表に行数が入る。

SQLERRD(2) には内部エラー・コードが入ることもある。

SQLERRD(3) sqlerrd[2] SQLERR(3) INTEGER DELETE、INSERT、UPDATE、または MERGE ステートメントの後に、削除、挿入、または更新の対象となる行の数が含まれます。 この数は、トリガー、参照整合性制約、またはBUSINESS_TIME期間のFOR PORTION OF句の処理の結果挿入された行の影響を受ける行を除外しています。 データ変更ステートメントを含む SELECT、または SELECT INTO に対するカーソルの OPEN の場合、SQLERRD(3) には組み込みデータ変更ステートメントによる影響を受けた行数が入る。 この値は、SQL ステートメントが失敗した場合は 0 となり、ステートメントの実行中に行われた変更が すべて取り消されたことを示します。

DELETE ステートメントの場合、 操作がセグメント化表スペースにある表からの一括削除であり、DELETE ステートメントに選択基準が含まれていなかった場合、値は -1 になる。 削除の対象がビューであった場合は、DELETE ステートメントにもビューの定義にも選択基準は含まれていない。

TRUNCATE ステートメントの場合、 値は -1 になる。

PREPARE ステートメントの場合は、選択された行の推定数が入る。 行数が 2,147,483,647 より大きい場合は、2,147,483,647 の値が戻されます。

REFRESH TABLE ステートメントの場合、SQLERRD(3) にはマテリアライズ照会表に挿入された行数が入る。

行セット位置付け FETCH の場合、取り出された行数が入る。

SQLERRD(3) (続き)      

SQLCODE -911-913 の場合、SQLERRD(3) にはタイムアウトまたはデッドロックの理由コードが入る。

動的ステートメントの構文解析でエラーが発生した場合、あるいはネイティブ SQL プロシージャーの構文解析、バインディング、または実行でエラーが発生した場合、SQLERRD(3) にはエラーが発生した行番号が入ります。 この行番号が有効であるためには、SQLCAID の 6 番目のバイトは「L」でなければなりません。 この値は、ステートメント・ソースに新しい行制御文字が含まれている場合にのみ意味があります。 この情報は、外部 SQL プロシージャーには戻されません。

SQLERRD(4) sqlerrd[3] SQLERR(4) INTEGER 通常は、必要なリソースの相対見積もりの概算を示す短精度浮動小数点数値である timeron が入る (注 4 を参照)。 これは必要な時間の見積もりは反映しない。 動的に定義された SQL ステートメントを準備する場合には、この フィールドを準備済み SQL ステートメントの相対コストの標識として使用できる。 特定のステートメントについて、この数値は、カタログ内の統計が 変更されることで変わることがある。 また、 Db2 for z/OS のリリース間でも変更される可能性があります。
SQLERRD(5) sqlerrd[4] SQLERR(5) INTEGER PREPARE ステートメントまたは EXECUTE IMMEDIATE ステートメントの構文エラーの位置 または列が入る。
SQLERRD(6) sqlerrd[5] SQLERR(6) INTEGER 内部エラー・コードが入る。
SQLWARN0 SQLWARN0 SQLWRN(0) CHAR(1) 警告状態に他の標識が設定されていない (つまり、他の標識に W または Z が含まれて いない) 場合、ブランクが入る。 少なくとも他に 1 つの標識に W または Z が含まれている場合には、W が入る。
SQLWARN1 SQLWARN1 SQLWRN(1) CHAR(1) ホスト変数へストリング列を割り当てるときにその値が切り捨て られた場合に、W が入る。 OPEN CURSOR または ALLOCATE CURSOR ステートメントの後に、順方向カーソルの場合には N、両方向スクロール・カーソルの場合には S が入る。
SQLWARN2 SQLWARN2 SQLWRN(2) CHAR(1) 集約関数の引数から NULL 値が除去された場合に、W が入る。MIN 関数の場合は、NULL 値を除去してもその結果は左右されないため、必ずしも W には設定されない。
SQLWARN3 SQLWARN3 SQLWRN(3) CHAR(1) 結果列の数がホスト変数の数より多い場合に、W が入る。 ASSOCIATE LOCATORS ステートメントに 指定されたロケーターの数が戻されたストアード・プロシージャーよりも少ない場合には Z が入る。
SQLWARN4 SQLWARN4 SQLWRN(4) CHAR(1) 準備済みの UPDATE ステートメントまたは DELETE ステートメント に WHERE 文節が含まれていない場合に、W が入る。 両方向スクロール・カーソルの場合、OPEN CURSOR または ALLOCATE CURSOR ステートメントの後に、センシティブ動的カーソルの場合は D、インセンシティブ・カーソルの場合は I、センシティブ静的カーソルの場合は S が入ります。カーソルがスクロールできない場合は空白です。
SQLWARN5 SQLWARN5 SQLWRN(5) CHAR(1) Db2 for z/OS において有効なSQLステートメントではないため、SQLステートメントが実行されなかった場合はWが格納されます。 OPEN CURSOR または ALLOCATE CURSOR ステートメントの後 に、カーソルの能力を反映するために、1 (読み取り専用)、2 (読み取りおよび削除)、 または 4 (読み取り、削除、更新) の文字値が入る。
SQLWARN6 SQLWARN6 SQLWRN(6) CHAR(1) DATE 値または TIMESTAMP 値に月または年の期間を足した結果が 無効な日 (例えば 6 月 31 日) となる場合に、W が入る。 正しい結果とするために、日の値がその月の末日に変更されたことを示す。
SQLWARN7 SQLWARN7 SQLWRN(7) CHAR(1) 10 進数の乗算または除算のオペランドとして使用される数値の 小数部分からゼロでない数字が 1 つ以上除去された場合に、W が入る。
SQLWARN8 SQLWARN8 SQLWRX(1) CHAR(1) 変換できない文字が置換文字に置き換えられた場合に、W が入る。 信頼された接続を確立しようとして失敗した場合、Yが含まれます。
SQLWARN9 SQLWARN9 SQLWRX(2) CHAR(1) COUNT または COUNT_BIG の処理中に算術例外が無視された場合に、W が入る。 ストアード・プロシージャーが複数の 結果セットを戻した場合に、Z が入る。
SQLWARNA SQLWARNA SQLWRX(3) CHAR(1) SQLCA の少なくとも 1 つの文字フィールド、または SQLDA の名前 またはラベルが、文字変換エラーのために無効となった場合に、W が入る。
SQLSTATE SQLSTATE SQLSTT CHAR(5) 最も新しく実行された SQL ステートメントの結果を表す戻りコード が入る (注 5 を参照)。
注:
  1. プリコンパイラー・オプション STDSQL(YES) が使われている場合、SQLCA 内で SQLCODE は SQLCADE に置き換えられます。
  2. SQL 戻りコードの具体的な意味については、 SQL コードを参照してください。
  3. COBOL の場合は、SQLERRM に SQLERRML および SQLERRMC が含まれます。 PL/I および C の場合、可変長ストリング SQLERRM は、SQLERRMC に 接頭部として SQLERRML を加えたものに相当します。 アセンブラーの場合、ストレージ域 SQLERRM は SQLERRML および SQLERRMC に相当します。 SQLCAに含まれる、さまざまなホスト言語の例をご覧ください。
  4. timeron の使用は、特別な処理を必要とする場合があります。 これは、INTEGER 配列の中の浮動小数点数値であるためです。 例えば、PL/I の場合、最初に値を BIN FIXED(31) に基づく変数に コピーできます。この変数は、BIN FLOAT(24) 変数と一致します。
  5. SQLSTATE値の説明については、「SQLSTATE値と一般的なエラーコード 」を参照してください。