スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

付録A.1 SQL連絡領域の構成と内容

SQL実行時の情報を受け取る領域の構成,及び内容について説明します。

<この項の構成>
(1) SQL連絡領域の構成
(2) SQL連絡領域の内容

(1) SQL連絡領域の構成

SQL連絡領域の構成を次の図に示します。

図A-1 SQL連絡領域の構成

[図データ]

注1
( )内は領域の長さ(単位:バイト)を示します。

注2
( )内の[ ]の値は,64ビットモードの場合の長さを示します。なお,64ビットモードのWindowsの場合,SQLCAは336バイトとなります。

注3
64ビットモードでのSQLCABC,SQLCODE,及びSQLERRDの長さは,プラットフォームごとのlong型のサイズになります。

(2) SQL連絡領域の内容

SQL連絡領域の内容を次の表に示します。

表A-1 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
2 SQLCABC long 4 [8]6 SQL連絡領域の長さ(336 [368]バイト)が設定されています。
2 SQLCODE long 4 [8]6 SQL実行後にHiRDBから返されるリターンコードを受け取る領域です。リターンコードには次に示す意味があります。
負:正常に終了していません
0:正常に終了しました
正:正常に終了したが,メッセージ情報があります。
リターンコードに対応するメッセージについては,マニュアル「HiRDB Version 8 メッセージ」を参照してください。なお,リターンコードに対応するメッセージは,次のように検索します。
リターンコード→対応するメッセージ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 8 メッセージ」を参照してください。
2 SQLERRP char 8 HiRDBが使用します。
2 SQLERRD long 46×6 HiRDBの内部状態を示す領域で,データ型がlongの6個の配列です。
SQLERRD[0]:未使用
SQLERRD[1]:未使用
SQLERRD[2]:
SQLCODEの値が0,又は正の場合:
次のどれかの値が返されます。3
  • SELECT文で取り出した行数
  • UPDATE文で更新した行数
  • DELETE文で削除した行数
  • INSERT文で挿入した行数
  • FETCH文で取り出した行数
  • ASSIGN LIST文で作成した行数
SQLCODEの値が負の場合:
配列を使った更新時にエラーとなった配列要素を示す値が返されます。7
SQLERRD[3]:システムが使用します。
SQLERRD[4]:システムが使用します。
SQLERRD[5]:未使用
2 SQLWARN0 char 1 SQLWARN1〜Fの領域のどれかに警告フラグ('W')が設定された場合に'W'が設定されます。
2 SQLWARN1 char 1 文字データの検索で,データを受け取る埋込み変数の長さが短いために,切り捨てられた値を受け取った場合,'W'が設定されます。
又は,繰返し列の検索で,データを受け取る埋込み変数の要素数が足りなかったために,要素が切り捨てられた値を受け取った場合,'W'が設定されます。
それ以外は空白が設定されます。
2 SQLWARN2 char 1 集合関数の処理でナル値を無視した場合に'W'が設定されます。それ以外は空白が設定されます。
ただし,次のどちらかの場合は,集合関数の処理でナル値を無視しても空白が設定されることがあります。
  • ナル値を除外値とするインデクスを定義した表を検索する場合
  • グループ分け高速化機能を使用する場合
なお,リモートデータベースアクセスの場合,未使用になります。
2 SQLWARN3 char 1 検索結果の列の数と,その検索結果を受け取る埋込み変数の数が一致しない場合,'W'が設定されます。それ以外は空白が設定されます4
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 SQLWARNA5 char 1 日付演算の結果,存在しない日付が現れると,その月の最終日に修正した場合 'W' が設定されます。それ以外は空白が設定されます。
なお,リモートデータベースアクセスの場合,未使用になります。
2 SQLWARNB5 char 1 SQL実行時の演算途中でオーバフロー,又は0除算が発生し,その演算結果をナル値とした場合,'W'が設定されます。それ以外は空白が設定されます。
なお,リモートデータベースアクセスの場合,未使用になります。
2 SQLWARNC5 char 1 日付演算の結果の日間隔中の日の部分が,00〜99の範囲内にない場合,'W'が設定されます。それ以外の場合,空白'△'になります。
なお,リモートデータベースアクセスの場合,未使用になります。
2 SQLWARND char 1 外部サーバで発生したワーニングで,ほかのSQLWARNに分類できない場合,'W'が設定されます。
2 SQLWARNE char 1 予備
2 SQLWARNF char 1 予備
2 SQLCASYS char 16 HiRDBが使用します。

(凡例) −:該当しません。

長さの[ ]内の値は,64ビットモードの場合の長さです。なお,64ビットモードのWindowsの場合,SQLCAは336バイトとなります。

注※1
表のレベル番号は,SQL連絡領域の包含関係を示します。例えば,レベル番号1の連絡領域はレベル番号2の連絡領域で構成されることを示します。

注※2
リモートデータベースアクセスしたサーバ側のデータベース管理システムの種別が設定されます。SQLCAIDEに設定される内容は次に示す意味があります。
設定値 サーバ側のデータベース
管理システムの種別
リモートデータベース
アクセスプロトコル
'K' SQL/Kを示します。 OSI-RDA
'O' ORACLEを示します。 OSI-RDA
'P' HiRDBを示します。 OSI-RDA
'R' XDM/RDを示します。 OSI-RDA
'1' RDB1 E2を示します。 OSI-RDA
'△' ローカルアクセスを示します。 該当しません。
上記以外 次のどちらかを示します。
  • 上記以外のデータベース管理システムを示します。
  • サーバシステムと接続していないため,データベース管理システムの種別を特定できません。
OSI-RDA

注※3
リモートデータベースアクセスでは,分散サーバによって設定内容が次のように異なります。
返される値 分散サーバの種別
HiRDB又は
XDM/RD
HiRDB及び
XDM/RD以外
SELECT文で取り出した行数 設定されます。 サーバDBMSから行数が返された場合に設定されます。返されない場合,'0'が設定されます。
UPDATE文で更新した行数
DELETE文で削除した行数
INSERT文で挿入した行数
FETCH文で取り出した行数 設定されます。
ASSIGN LIST文で作成した行数 使用できません。 使用できません。

注※4
サーバがHiRDB,及びXDM/RDの場合,リモートデータベースアクセスでは,SQLエラーになります。

注※5
ソート処理を含むSQL文,又はEXISTS述語を使用したSQL文を実行した場合,最初のFETCH文で'W'を返します。
また,HiRDB/パラレルサーバ環境のとき,WHERE句で警告を出す要因が発生した場合,'W'を返す行が不定となります。

注※6
64ビットモードの場合,プラットフォームごとのlong型のサイズになります。

注※7
クライアント環境変数PDARYERRPOSにYESを指定した場合に設定されます。