Hitachi

ノンストップデータベース HiRDB Version 10 XDM/RD E2接続機能


6.3.1 SQL連絡領域(SQLCA)

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

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

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

なお,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 メッセージ」,JXZから始まる場合は,マニュアル「VOS3 データマネジメントシステム XDM E2系 メッセージ(XDM/RD E2)」を参照してください。

なお,リターンコードに対応するメッセージIDについては,表「リターンコードに対応するメッセージID」を参照してください。

2

2

SQLERRM

256

SQLERRML領域およびSQLERRMC領域の内容を値として持ちます。なお,SQLCODE領域に返されるリターンコードの正負によって次に示すように異なります。

  • リターンコードが負の場合,誤りの個所や原因を示す文字列を返すときがあります。

  • リターンコードが正の場合,メッセージ情報を示す文字列を返すときがあります。

3

SQLERRML

short

2

SQLERRMC領域に返されるメッセージの長さを示します。

3

SQLERRMC

char

254

SQLCODE領域に返されるリターンコードに対応するメッセージが格納される領域です。メッセージがKFPAから始まる場合は,HiRDBクライアントから返されたメッセージです。設定内容については,マニュアル「HiRDB メッセージ」を参照してください。また,メッセージが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文で作成した行数

  • ASSIGN LIST文で名称変更したリストの行数※4

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の時間は含まれません。

注※4

システム共通定義でpd_list_rowcount_in_renameオペランドにYを指定した場合だけ参照してください。

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

リターンコード

対応するメッセージID

-yyy(例:-125)

KFPA11yyyまたはJXZ1yyy(例:KFPA11125またはJXZ1125)

yyy(例:100)

KFPA12yyyまたはJXZ2yyy(例:KFPA12100またはJXZ2100)

-1yyy(例:-1000)

JXZ9yyy(例:JXZ9000)