付録A.1 SQL連絡領域の構成と内容
SQL実行時の情報を受け取る領域の構成,及び内容について説明します。
- 〈この項の構成〉
(1) SQL連絡領域の構成
SQL連絡領域の構成を次の図に示します。
- 注1
-
( )内は領域の長さ(単位:バイト)を示します。
- 注2
-
( )内の[ ]の値は,64ビットモードの場合の長さを示します。なお,64ビットモードのWindowsの場合,SQLCAは336バイトとなります。
- 注3
-
64ビットモードでのSQLCABC,SQLCODE,及びSQLERRDの長さは,プラットフォームごとのlong型のサイズになります。
(2) SQL連絡領域の内容
SQL連絡領域の内容を次の表に示します。
レベル 番号※1 |
連絡領域名 |
データ型 |
長さ (バイト) |
内 容 |
---|---|---|---|---|
1 |
SQLCA |
− |
336 [368] |
SQL連絡領域全体の名前を表します。 |
2 |
SQLCAID |
− |
8 |
SQLCAIDC領域,SQLCAIDS領域,及びSQLCAIDE領域の内容を値として持ちます。 |
3 |
SQLCAIDC |
char |
5 |
SQL連絡領域である文字列('SQLCA')が設定されます。 |
3 |
SQLCAIDS |
char |
2 |
HiRDBが使用します。 |
3 |
SQLCAIDE |
char |
1 |
HiRDBが使用します。 |
2 |
SQLCABC |
long |
4 [8]※3 |
SQL連絡領域の長さ(336 [368]バイト)が設定されています。 |
2 |
SQLCODE |
long |
4 [8]※3 |
SQL実行後にHiRDBから返されるリターンコードを受け取る領域です。リターンコードには次に示す意味があります。 負:正常に終了していません 0:正常に終了しました 正:正常に終了したが,メッセージ情報があります。 リターンコードに対応するメッセージについては,マニュアル「HiRDB Version 9 メッセージ」を参照してください。なお,リターンコードに対応するメッセージは,次のように検索します。 リターンコード→対応するメッセージID -yyy → KFPA11yyy -1yyy → KFPA19yyy -3yyy → KFPA18yyy yyy → KFPA12yyy 3yyy → KFPA13yyy (例) <リターンコード>→<メッセージID> -125 → KFPA11125 -1200 → KFPA19200 -3200 → KFPA18200 100 → KFPA12100 3010 → KFPA13010 |
2 |
SQLERRM |
− |
256 |
SQLERRML領域,及びSQLERRMC領域の内容を値として持ちます。なお,SQLCODE領域に返されるリターンコードの正負によって次に示すように異なります。
|
3 |
SQLERRML |
short |
2 |
SQLERRMC領域に返されるメッセージの長さを示します。 |
3 |
SQLERRMC |
char |
254 |
SQLCODE領域に返されるリターンコードに対応するメッセージが格納される領域です。設定内容については,マニュアル「HiRDB Version 9 メッセージ」を参照してください。 |
2 |
SQLERRP |
char |
8 |
HiRDBが使用します。 |
2 |
SQLERRD |
long |
4※3×6 |
HiRDBの内部状態を示す領域で,データ型がlongの6個の配列です。
|
2 |
SQLWARN0 |
char |
1 |
SQLWARN1〜Fの領域のどれかに警告フラグ('W')が設定された場合に'W'が設定されます。 |
2 |
SQLWARN1 |
char |
1 |
文字データの検索で,データを受け取る埋込み変数の長さが短いために,切り捨てられた値を受け取った場合,'W'が設定されます。 又は,繰返し列の検索で,データを受け取る埋込み変数の要素数が足りなかったために,要素が切り捨てられた値を受け取った場合,'W'が設定されます。 それ以外は空白が設定されます。 |
2 |
SQLWARN2 |
char |
1 |
集合関数の処理でナル値を無視した場合に'W'が設定されます。それ以外は空白が設定されます。 ただし,次のどちらかの場合は,集合関数の処理でナル値を無視しても空白が設定されることがあります。
|
2 |
SQLWARN3 |
char |
1 |
検索結果の列の数と,その検索結果を受け取る埋込み変数の数が一致しない場合,'W'が設定されます。それ以外は空白が設定されます。 |
2 |
SQLWARN4 |
char |
1 |
WHERE句がないUPDATE文,又はWHERE句がないDELETE文が実行された場合,'W'が設定されます。それ以外は空白が設定されます。 |
2 |
SQLWARN5 |
char |
1 |
予備 |
2 |
SQLWARN6 |
char |
1 |
暗黙的にトランザクションが取り消された場合に'W'が設定されます。それ以外は空白が設定されます。 |
2 |
SQLWARN7 |
char |
1 |
UPDATE文で,SET句又はDELETE句に添字付きの繰返し列を指定した場合,更新する行に要素がなくてその更新が無視されたときに,'W'が設定されます。 それ以外は空白が設定されます。 |
2 |
SQLWARN8 |
char |
1 |
予備 |
2 |
SQLWARN9 |
char |
1 |
予備 |
2 |
SQLWARNA※2 |
char |
1 |
日付演算の結果,存在しない日付が現れると,その月の最終日に修正した場合 'W' が設定されます。それ以外は空白が設定されます。 |
2 |
SQLWARNB※2 |
char |
1 |
SQL実行時の演算途中でオーバフロー,又は0除算が発生し,その演算結果をナル値とした場合,'W'が設定されます。それ以外は空白が設定されます。 |
2 |
SQLWARNC※2 |
char |
1 |
日付演算の結果の日間隔中の日の部分が,00〜99の範囲内にない場合,'W'が設定されます。それ以外の場合,空白'△'になります。 |
2 |
SQLWARND |
char |
1 |
HiRDBが使用します。 |
2 |
SQLWARNE |
char |
1 |
予備 |
2 |
SQLWARNF |
char |
1 |
予備 |
2 |
SQLCASYS |
char |
16 |
HiRDBが使用します。 |
(凡例) −:該当しません。
- 注
-
長さの[ ]内の値は,64ビットモードの場合の長さです。なお,64ビットモードのWindowsの場合,SQLCAは336バイトとなります。
- 注※1
-
表のレベル番号は,SQL連絡領域の包含関係を示します。例えば,レベル番号1の連絡領域はレベル番号2の連絡領域で構成されることを示します。
- 注※2
-
ソート処理を含むSQL文,又はEXISTS述語を使用したSQL文を実行した場合,最初のFETCH文で'W'を返します。
また,HiRDB/パラレルサーバ環境のとき,WHERE句で警告を出す要因が発生した場合,'W'を返す行が不定となります。
- 注※3
-
64ビットモードの場合,プラットフォームごとのlong型のサイズになります。
- 注※4
-
システム共通定義でpd_list_rowcount_in_renameオペランドにYを指定した場合だけ参照してください。