フィールドの説明

以下の表に示している名前は、SQL の INCLUDE ステートメントによって指定されている名前です。

大部分については、C (および C++)、COBOL、および PL/I では同じ名前を使用します。RPG/400® では、名前が 6 文字までに制限されているため、RPG では異なる名前を使用します。 ILE RPG では、ロング・ネームと 6 文字の短い名前との両方がサポートされています。 PL/I の名前と COBOL の名前が異なっている 1 つの事例に注意してください。

表 1. SQL の INCLUDE ステートメントによって組み込まれる名前
C の名前
COBOL の名前
PL/I の名前
ILE RPG の名前
RPG/400 の名前
フィールド
データ・タイプ
フィールドの値
SQLCAID
sqlcaid
SQLCAID
SQLAID
CHAR(8) ストレージ・ダンプ用の「目印」として、「SQLCA」が入ります。
SQLCABC
sqlcabc
SQLCABC
SQLABC
INTEGER SQLCA の長さ 136 が入ります。
SQLCODE
sqlcode
SQLCODE
SQLCOD
INTEGER SQL 戻りコードが入ります。
コード
意味
0
正常に実行された。ただし、SQLWARN 標識がセットされている場合がある。
正の値
正常に実行された (ただし、警告条件があった)。
負の値
エラー状態。
SQLERRML1
sqlerrml
SQLERRML
SQLERL
SMALLINT SQLERRMC の長さ標識 (0 から 70 までの範囲)。0 は SQLERRMC の値が無関係であることを示します。
SQLERRMC1
sqlerrmc
SQLERRMC
SQLERM
CHAR(70) SQLCODE に関連するメッセージ置換テキストが入ります。 CONNECT および SET CONNECTION の場合、この SQLERRMC フィールドにはその接続に関する情報が入ります。 置換テキストについての説明は、表 4 を参照してください。
SQLERRP
sqlerrp
SQLERRP
SQLERP
CHAR(8) エラーまたは警告を戻したプロダクトおよびモジュールの名前が入ります。 最初の 3 文字は、次のようにプロダクトを識別します。
  • ARI (Db2® UDB サーバー (VM および VSE 版) の場合)
  • DSN (Db2 for z/OS® の場合)
  • QSQ (Db2 for i の場合)
  • 他のすべての Db2 プロダクトの場合は SQL
詳細については、CONNECT (タイプ 1)、または CONNECT (タイプ 2)を参照してください。
SQLERRD
sqlerrd
SQLERRD
SQLERR2
アレイ 診断情報が提供される 6 つの INTEGER 変数が入ります。診断情報の説明については、表 3 を参照してください。
SQLWARN
sqlwarn
SQLWARN
SQLWRN3
CHAR(11) 11 個の CHAR(1) 警告標識です。それぞれにブランク、「W」、または「N」のいずれかが入ります。
SQLSTATE
sqlstate
SQLSTATE
SQLSTT
CHAR(5) 直前に実行された SQL ステートメントの結果を示す戻りコードです。
注 :
1
COBOL では、SQLERRM には SQLERRML と SQLERRMC が含まれています。 PL/I では、可変長ストリング SQLERRM は、SQLERRMC にプレフィックス SQLERRML が付いたものと同じです。
2
RPG/400 では、SQLERR は 24 文字 (配列ではなく) として定義されます。 これらの文字は、SQLER1 から SQLER6 までのフィールドによって再定義されます。 各フィールドは、フルワード 2 進数です。 ILE RPG の場合には、SQLERR は配列としても再定義されています。 この名前の配列は SQLERRD です。
3
RPG/400 では、SQLWRN は 11 文字 (配列ではなく) として定義されます。 これらの文字は、SQLWN0 から SQLWNA までのフィールドによって再定義されます。 各フィールドは、フルワード 2 進数です。 ILE RPG の場合には、SQLWRN は配列としても再定義されています。 この名前の配列は SQLWARN です。
表 2. SQLWARN 診断情報
C の名前
COBOL の名前
PL/I の名前
ILE RPG の名前
RPG/400 の名前
フィールドの値
SQLWARN0
sqlwarn[0]
SQLWARN(1)
SQLWN0
「W」または「N」が入っている他の標識が 1 つでもあれば、「W」が入ります。他の標識がすべてブランクの場合は、ブランクが入ります。
SQLWARN1
sqlwarn[1]
SQLWARN(2)
SQLWN1
ホスト変数への割り当て時にストリング列の値が切り捨てられた場合は「W」になります。 *NOCNULRQD が CRTSQLCI または CRTSQLCPPI コマンド (または SET OPTION ステートメントの CNULRQD(*NO)) で指定され、ストリング列の値が C NUL 終了ホスト変数に割り当てられ、しかもそのホスト変数が結果を入れるには十分な大きさであるが、NUL 終了文字を入れるには十分な大きさでない場合は、ここに 'N' が入ります。
SQLWARN2
sqlwarn[2]
SQLWARN(3)
SQLWN2
関数の引数から NULL 値が削除された場合は、「W」が入ります。ただし、MIN 関数または MAX 関数の場合は、必ずしも「W」に設定されるわけではありません。それらの関数の結果は、NULL 値の削除に左右されないからです。
SQLWARN3
sqlwarn[3]
SQLWARN(4)
SQLWN3
列の数がホスト変数の数よりも多い場合には、「W」が入ります。
SQLWARN4
sqlwarn[4]
SQLWARN(5)
SQLWN4
準備された UPDATE または DELETE ステートメントに WHERE 文節が指定されていない場合に、 「W」が入ります。
SQLWARN5
sqlwarn[5]
SQLWARN(6)
SQLWN5
OPEN ステートメントの後のカーソルの能力を示すための文字値 1 (読み取り専用)、2 (読み取りおよび削除)、または 4 (読み取り、削除、および更新) が入ります。
SQLWARN6
sqlwarn[6]
SQLWARN(7)
SQLWN6
日付演算の結果、月の終わりの調整となった場合に、'W' が入ります。
SQLWARN7
sqlwarn[7]
SQLWARN(8)
SQLWN7
予約済み
SQLWARN8
sqlwarn[8]
SQLWARN(9)
SQLWN8
文字変換の結果に置換文字が含まれている場合に、'W' が入ります。
SQLWARN9
sqlwarn[9]
SQLWARN(10)
SQLWN9
予約済み
SQLWARNA
sqlwarn[10]
SQLWARN(11)
SQLWNA
予約済み
表 3. SQLERRD の診断情報
C の名前
COBOL の名前
PL/I の名前
ILE RPG の名前
RPG/400 の名前
フィールドの値
SQLERRD(1)
sqlerrd[0]
SQLERRD(1)
SQLER1
SQLCODE が 0 より小さい場合に、CPF エスケープ・メッセージの最後の 4 文字が入ります。例えば、メッセージが CPF5715 であれば、X'F5F7F1F5' が SQLERRD(1) に入れられます。1

プロシージャーの呼び出しの場合、RETURN ステートメントで指定された 戻り状況値が入ります。 RETURN ステートメントで戻り状況値が指定されていない場合、またはプロシージャーが外部プロシージャーの場合は、次のようになります。

  • CALL ステートメントが成功した場合、0 が戻されます。
  • CALL ステートメントが成功しなかった場合は、-1 が返されます。
SQLERRD(2)
sqlerrd[1]
SQLERRD(2)
SQLER2
SQL コードが 0 より小さい場合に、CPD 診断メッセージの最後の 4 文字が入ります。1

CALL ステートメントの場合は、SQLERRD(2) には結果セットの数が入ります。

OPEN ステートメントでは、カーソルが変更に反応しない場合、SQLERRD(2) には結果セットに含まれる実際の行数が入ります。 カーソルが変更に反応する場合、SQLERRD(2) には結果セットに含まれる行数の推定値が入ります。

SQLERRD(3)
sqlerrd[2]
SQLERRD(3)
SQLER3
状況ステートメントについての CONNECT の場合は、SQLERRD(3) には接続状況に関する情報が入ります。詳しくは、CONNECT (タイプ 2)を参照してください。

INSERT、MERGE、UPDATE、REFRESH、DELETE の場合は、影響を受ける行の数が入ります。

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

FETCH ステートメントの場合は、SQLERRD(3) には取り出された行の数が入ります。

PREPARE ステートメントの場合は、選択された行の見積数が入ります。 行数が 2 147 483 647 より多い場合は、2 147 483 647 が戻されます。

SQLERRD(4)
sqlerrd[3]
SQLERRD(4)
SQLER4
PREPARE ステートメントの場合は、すべての実行で必要なリソースの相対的な数の見積もりが入ります。 この数は、索引、ファイル・サイズ、または CPU モデルなどの現在の可用性 によって異なります。これは、Db2 for i Query Optimizer によって選択されたアクセス・プランの見積コストです。

CONNECT および SET CONNECTION ステートメントの場合は、SQLERRD(4) には会話のタイプが入り、コミット可能な更新を行うことができるかどうかが示されます。詳しくは、CONNECT (タイプ 2)を参照してください。

CALL ステートメントの場合、SQLERRD(4) には、プロシージャーが正常に実行されなかった原因となった、エラーのメッセージ・キーが入ります。QMHRTVPM API は、そのメッセージ・キーのメッセージ記述を戻すために使用できます。

DELETE、INSERT、MERGE、UPDATE の各ステートメントでトリガー・エラーが発生すると、トリガー・プログラムから通知されたエラーのメッセージ・キーが SQLERRD(4) に入ります。 QMHRTVPM API は、そのメッセージ・キーのメッセージ記述を戻すために使用できます。

FETCH ステートメントの場合は、結果行に LOB が含まれなければ、SQLERRD(4) には取り出された行の長さが入ります。

OPEN ステートメントの場合は、結果行に LOB が含まれなければ、SQLERRD(4) には結果行の長さが入ります。

SQLERRD(5)
sqlerrd[4]
SQLERRD(5)
SQLER5

CONNECT または SET CONNECTION ステートメントでは、SQLERRD(5) には次の値が入ります。

  • 接続が未接続である場合には -1
  • 接続がローカルである場合には 0
  • 接続がリモートである場合には 1

DELETE、INSERT、MERGE、UPDATE の各ステートメントの場合は、参照制約とトリガーによって影響を受けた行の数が入ります。

EXECUTE IMMEDIATE または PREPARE ステートメントの場合、構文エラーの位置が入っていることがあります。

複数行の FETCH ステートメントでは、現在表にある最後の行が取り出された 場合は、SQLERRD(5) には +100 が入ります。

PREPARE ステートメントの場合、SQLERRD(5) には、準備済みステートメント内のパラメーター・マーカーの数が入ります。

SQLERRD(6)
sqlerrd[5]
SQLERRD(6)
SQLER6
SQLCODE が 0 の場合に、SQL 完了メッセージの ID が入ります。

それ以外の場合、この値は未定義になります。

注記:
1
SQLERRD(1) および SQLERRD(2) が設定されるのは、設定の条件に該当する場合、および現行サーバーが Db2 for i である場合のみに限られます。
表 4. CONNECT および SET CONNECTION の場合の SQLERRMC の置換テキスト
説明 データ・タイプ
リレーショナル・データベース名 CHAR(18)
プロダクト識別 (SQLERRP と同じ) CHAR(8)
サーバー・ジョブのユーザー ID CHAR(10)
接続方式 (*DUW または *RUW) CHAR(10)
DDM サーバー・クラス名
QAS
Db2 for i
QDB2
Db2 for z/OS
QDB2/6000
Db2 for AIX®
QDB2/HPUX
Db2 for HP-UX**
QDB2/LINUX
Db2 for Linux
QDB2/NT
Db2 for Windows** NT/2000/XP
QDB2/SUN
Db2 for SUN** Solaris**
QSQLDS/VM
Db2 サーバー (VM 版)
QSQLDS/VSE
Db2 サーバー (VSE 版)
CHAR(10)
接続タイプ (SQLERRD(4) と同じ) SMALLINT