スケーラブルデータベースサーバ HiRDB Version 8 XDM/RD E2接続機能

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

6.3.1 SQL連絡領域(SQLCA)

HiRDBクライアントを使用する場合,HiRDBクライアントで使用するSQL連絡領域(SQLCA)はXDM/RD E2の形式ではなく,HiRDBの形式となります。

ただし,設定される内容は,HiRDBサーバを使用する場合とは異なります。

HiRDBのSQL連絡領域の形式と,XDM/RD E2からHiRDBクライアントに返す内容を表6-6に示します。

なお,XDM/RD E2からHiRDBクライアントに返す内容は,XDM/RD E2のバージョンおよびリビジョンの違いによって変化する場合があります。

次に示す内容はXDM/RD E2 06-00の内容です。XDM/RD E2のバージョンが06-01以降の場合は,マニュアル「VOS3 データマネジメントシステム XDM E2系 XDM/RD E2 SQLリファレンス」を参照してください。

表6-6 HiRDBのSQL連絡領域の形式と,XDM/RD E2からHiRDBクライアントに返す内容

レベル番号※1 連絡領域名 データ
長さ
(バイト)
内容
1 1 SQLCA 336 SQL連絡領域全体の名前を表します。
2 2 SQLCAID 8 SQLCAIDC領域,SQLCAIDX領域,SQLCAIDS領域,およびSQLCAIDE領域の内容を値として持ちます。
3 SQLCAIDC char 5 SQL連絡領域である文字列('SQLCA')が設定されます。
3 SQLCAIDX char 1 エラーの発生したXDM/RD E2のXDM識別子が設定されます。
3 SQLCAIDS char 1 文字列('△')を値として持ちます。
3 SQLCAIDE char 1 文字列('△')を値として持ちます。※2
2 SQLCABC long 4 SQL連絡領域の長さ(336バイト)が設定されています。
2 SQLCODE long 4 SQL実行後にHiRDBクライアントまたはXDM/RD E2から返されるリターンコードを受け取る領域です。リターンコードには次に示す意味があります。

負:
正常に終了していません。

0:
正常に終了しました。

正:
正常に終了しましたが,メッセージ情報があります。
 
リターンコードに対応するメッセージについては,SQLERRMC領域に設定されたメッセージがKFPAから始まる場合は,マニュアル「HiRDB Version 8 メッセージ」,JXZから始まる場合は,マニュアル「VOS3 データマネジメントシステム XDM E2系 メッセージ(XDM/RD E2)」を参照してください。
なお,リターンコードに対応するメッセージIDについては,表6-7を参照してください。
2 2 SQLERRM 256 SQLERRML領域およびSQLERRMC領域の内容を値として持ちます。なお,SQLCODE領域に返されるリターンコードの正負によって次に示すように異なります。
  • リターンコードが負の場合,誤りの個所や原因を示す文字列を返すときがあります。
  • リターンコードが正の場合,メッセージ情報を示す文字列を返すときがあります。
3 SQLERRML short 2 SQLERRMC領域に返されるメッセージの長さを示します。
3 SQLERRMC char 254 SQLCODE領域に返されるリターンコードに対応するメッセージが格納される領域です。メッセージがKFPAから始まる場合は,HiRDBクライアントから返されたメッセージです。設定内容については,マニュアル「HiRDB Version 8 メッセージ」を参照してください。また,メッセージがJXZから始まる場合は,XDM/RD E2から返されたメッセージです。設定内容については,マニュアル「VOS3 データマネジメントシステム XDM E2系 メッセージ(XDM/RD E2)」を参照してください。
2 SQLERRP char 8 XDM/RD E2が使用します。
2 SQLERRD long 4×6 XDM/RD E2の内部状態を示す領域で,データ型がlongの6個の配列です。

SQLERRD[0]:
0,またはSQL文のエラー位置(単位:バイト)

SQLERRD[1]:
CPU時間(単位:0.1ミリ秒)※3

SQLERRD[2]:
次のどれかの値が返されます。
  • SELECT文で取り出した行数
  • UPDATE文で更新した行数
  • DELETE文で削除した行数
  • INSERT文で挿入した行数
  • FETCH文で取り出した行数
  • ASSIGN LIST文で作成した行数

SQLERRD[3]:
XDM/RD E2が使用します。

SQLERRD[4]:
XDM/RD E2が使用します。

SQLERRD[5]:
経過時間(単位:0.1ミリ秒)※3
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文またはDELETE文が実行された場合に'W'が設定されます。それ以外は空白が設定されます。
2 SQLWARN5 char 1 SELECT文を実行した結果,検索結果が2行以上あった場合に'W'が設定されます。それ以外は空白が設定されます。
2 SQLWARN6 char 1 暗黙的にトランザクションが取り消された場合に'W'が設定されます。なお,X/Openに準拠したAPIを使用したUAPの場合は,トランザクションのロールバックが必要なときに'W'が設定されます。'W'が設定されている場合は,必ずトランザクションのロールバックをしてください。
2 SQLWARN7 char 1 UPDATE文でSET句またはDELETE句に添字付きの繰返し列を指定したが,更新する行にその要素がないため,更新指定が無視されたものがある場合に'W'が設定されます。それ以外は空白が設定されます。
2 SQLWARN8 char 1 予備
2 SQLWARN9 char 1 予備
2 SQLWARNA char 1 日付演算の結果,存在しない日付が現れたときに,XDM/RD E2が自動的にその月の最終日に修正した場合に'W'が設定されます。それ以外は空白が設定されます。
2 SQLWARNB char 1 SQL実行時の演算途中でオーバーフローまたは0除算が発生したため,演算結果をナル値とした場合に'W'が設定されます。探索条件中でオーバーフローが発生した場合は,条件が真となった行が処理される以前に処理された行で,オーバーフローが発生したことになります。それ以外は空白が設定されます。
2 SQLWARNC char 1 日付演算の結果で日間隔中の日の部分が,00〜99の範囲外となった場合に'W'が設定されます。それ以外は空白が設定されます。
2 SQLWARND char 1 予備
2 SQLWARNE char 1 予備
2 SQLWARNF char 1 予備
2 SQLCASYS char 16 予備

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

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

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

注※3
COMMIT,ROLLBACKの時間は含まれません。

表6-7 リターンコードに対応するメッセージID

リターンコード 対応するメッセージID
-yyy(例:-125) KFPA11yyyまたはJXZ1yyy(例:KFPA11125またはJXZ1125)
yyy(例:100) KFPA12yyyまたはJXZ2yyy(例:KFPA12100またはJXZ2100)
-1yyy(例:-1000) JXZ9yyy(例:JXZ9000)