sqlData システム変数は、グローバルに使用可能な多数のフィールドを
含む構造化レコードです。レコードの構造は以下のようになっています。
record sqlData type basicRecord
10 sqlca hex(272);
20 * hex(24);
20 sqlcode int;
20 * hex(4);
20 sqlerrmc char(70);
20 * hex(16);
20 sqlerrd int[6];
20 sqlwarn char(1)[11];
20 sqlstate char(5);
end
また、sysVar ライブラリーの以前のロケーションでも、同じ変数を見つけることができます。
しかし、sysVar 内の変数には、現行プログラムに限定されたスコープがあります。
例えば、programA が programB を呼び出し、両方のプログラムがリレーショナル・データベースにアクセスする場合、各プログラムは sysVar.sqlData の専用コピーを所有します。
programB に設定された値は、programA に戻ると使用できません。このため、これら変数のいずれかを使用する場合には、その名前を sqlLib.sqlData.sqlcode のように完全修飾にします。
レコードには、次の個別のフィールドが含まれます。
- sqlcode
- プログラムがリレーショナル・データベースにアクセスした後の状況コードが含まれます。
- sqlerrmc
- sqlcode と関連付けられたエラー・メッセージです。
- sqlerrd
- これらの 6 つの INT 変数には、以下の診断情報が含まれています。
- sqlerrd[1]
- SQL 接続が呼び出され、正常に接続する場合、この変数には、
アプリケーション・コード・ページからデータベース・コード・ページに変換される際に
大/小文字混合の文字データ (CHAR データ型) の長さで予期される値の最大の差分が含まれます。
0 または 1 の値は、拡張なしを示します。1 よりも大きな値は、長さにおける可能な拡張を示します。
負の値は、可能な縮小を示します。
SQL プロシージャーからの戻りが正常に実行された場合には、SQL プロシージャーの戻り状況値が含まれています。
- sqlerrd[2]
- SQL 接続が呼び出され、正常に接続する場合、この変数には、データベース・コード・ページから
アプリケーション・コード・ページに変換される際に大/小文字混合の文字データ (CHAR データ型) の
長さで予期される値の最大の差分が含まれます。
0 または 1 の値は、拡張なしを示します。1 よりも大きな値は、長さにおける可能な拡張を示します。
負の値は、可能な縮小を示します。
1 つ以上のエラーが生じた NOT ATOMIC 複合 SQL 文から SQLCA が戻された場合、
この値は失敗した文の数に設定されます。
- sqlerrd[3]
- PREPARE が呼び出され、正常に実行されると、このフィールド (または配列内のこの要素) には戻される行数の予想値が収容されます。
INSERT、UPDATE、DELETE、または MERGE の後には、操作用に修飾された実際の行数が含まれます。
複合 SQL が呼び出される場合には、すべてのサブステートメント行の累計が含まれます。
CONNECT が呼び出される場合には、データベースが更新可能であれば 1 が、データベースが読み取り専用であれば 2 が含まれます。
- OPEN 文が呼び出され、カーソルに SQL データ変更文が含まれていると、このフィールドには組み込みの挿入、更新、削除、またはマージ操作用に修飾した行数の合計が含まれます。
- SQL プロシージャーの CREATE PROCEDURE が呼び出され、SQL プロシージャー本体の解析時にエラーが検出される場合、そのエラーが見つかった行番号が含まれます。
この場合、有効な行番号は sqlca の 6 番目のバイトが「L」でなければなりません。
- sqlerrd[4]
- PREPARE が呼び出され、正常に実行されると、この変数には、その文の処理に必要なリソースの相対的なコスト予想値が含まれます。
複合 SQL が呼び出された場合、成功したサブステートメント数が含まれます。
CONNECT が呼び出された場合、次のいずれかのコードが含まれます。
- 0 - ダウン・レベルのクライアントからの 1 フェーズ・コミット
- 1 - 1 フェーズ・コミット
- 2 - 1 フェーズの読み取り専用コミット
- 3 - 2 フェーズ・コミット
- sqlerrd[5]
- 以下の両方のアクションの結果として、削除、挿入、または更新された行の総数が含まれます。
- 削除操作が正常に行われた後の制約の実施。
- アクティブ化されたトリガーからのトリガー済み SQL 文の処理。
複合 SQL が呼び出されると、このフィールド (または配列内のこの要素) にはすべてのサブステートメントのこれらの行の数の累計が含まれます。
場合によっては、エラーの検出時に、このフィールドに内部エラー・ポインターである負の値が含まれることがあります。
- CONNECT が呼び出された場合、sqlerrd[5] には、以下のいずれかの認証タイプ値が含まれます。
- 0
- サーバー認証
- 1
- クライアント認証
- 2
- DB2 Connect™ による認証
- 4
- SERVER_ENCRYPT 認証
- 5
- 暗号化を使用した DB2 Connect による認証
- 7
- Kerberos 認証
- 8
- KRB_SERVER_ENCRYPT 認証
- 9
- GSSPLUGIN 認証
- 10
- GSS_SERVER_ENCRYPT 認証
- 255
- 未指定の認証
- sqlerrd[6]
- 区分データベースの場合、エラーや警告が検出された区分の番号を含みます。
エラーや警告が検出されなかった場合、このフィールドにはコーディネーター・ノードの区分番号が含まれます。
このフィールドの番号は、db2nodes.cfg ファイル内のその区分に指定した番号と同じになります。
- sqlwarn
- 11 の警告標識のセット。複合 SQL が呼び出された場合、各標識にはすべてのサブステートメントに関する警告標識セットの累計が含まれます。
この配列には、次の標識が含まれます。
- sqlwarn[1]
- 以下のいずれかの値が含まれています。
- [ブランク]
- 他の標識はすべてブランクです。
- W
- 他の標識のうち、少なくとも 1 つがブランクではありません。
- sqlwarn[2]
- 以下のいずれかの値が含まれています。
- A
- CONNECT または ATTACH が正常に実行され、接続の許可名が 8 バイトよりも長くなっています。
- N
- NULL 終了文字が切り捨てられました。
- P
- sqlerrd[4] に保存された PREPARE ステートメントの相対コスト予想値が INTEGER に保存可能な値を超えたか、1 未満であったため、CURRENT EXPLAIN MODE または CURRENT EXPLAIN SNAPSHOT 特殊レジスターが NO 以外の値に設定されています。
- W
- ストリング列の値が、ホスト変数に代入されたときに切り捨てられました。
- sqlwarn[3]
- NULL 値が関数の引数から除去された場合には、W が含まれます。また、直前の SQL 入出力操作で、プログラムのホスト変数内に十分なスペースがないためにデータベース・マネージャーが文字データ・フィールドの切り捨てを実行した場合にも、W
が含まれます。
論理式を使用して、特定のホスト変数内の値が切り捨てされたかどうかをテストすることができます。詳しくは、『SQL レコードの論理式』にある trunc の説明を参照してください。
- ホスト変数が数値である場合は、切り捨ての警告は出されません。数値の端数部分は、何の通知もなく切り捨てられます。DB2® データベースを使用する場合、
数値の端数以外の部分がユーザー変数に適合しないと、データベース・マネージャーは、sqlcode に -304 を戻します。
- sqlwarn[4]
- 以下のいずれかの値が含まれています。
- W
- 列数がホスト変数の数と等しくありません。
- Z
- ASSOCIATE LOCATORS 文に指定した結果セット・ロケーターの数が、プロシージャーにより戻される結果セットの数よりも少なくなっています。
- sqlwarn[5]
- 準備した UPDATE 文や DELETE 文が WHERE 文節を含まない場合には、W を含みます。
- sqlwarn[6]
- 将来の使用に備えて予約済みです。
- sqlwarn[7]
- 不可能な日付を避けるために日付計算の結果が調整された場合には W が含まれます。
- sqlwarn[8]
- CONNECT が呼び出され、正常に実行されると、DYN_QUERY_MGMT データベース構成パラメーターが使用可能になっている場合には E が含まれます。
DB2 データベースを使用する場合は、日付または時間の値に対する算術演算の結果が無効であるために調整によって訂正されると、このフィールド (または配列内のこの要素) に W が入ります。
- sqlwarn[9]
- 変換できない文字が置換文字によって置き換えられた場合は W が含まれます。
- sqlwarn[10]
- 列関数処理中に、エラーのある演算式が無視された場合には、W が含まれます。
- sqlwarn[11]
- SQLCA のフィールドの 1 つで文字データ値を変換する際に変換エラーが生じた場合には、W が含まれます。
- sqlstate
- 最新の SQL ステートメントの結果を示す戻りコードです。
セグメント化された converse にわたって値が保存されるかどうか
いいえ