GET CONNECTION HANDLE(接続ハンドル取得)
機能
X/Open XAインタフェース環境下で複数接続機能を使用する場合,UAPが使用する接続ハンドルを割り当てます。
形式
GET CONNECTION HANDLE :PDCNCTHDL型変数, |
オペランド
PDCNCTHDL型として宣言した埋込み変数を指定します。
INT型として宣言した埋込み変数を指定します。
リターンコード受け取り変数に返される値を次に示します。
CHAR型(5バイト固定)として宣言した埋込み変数を指定します。
既定文字集合以外の文字集合は指定できません。
環境変数グループ識別子変数には,xa_open関数用文字列に指定した環境変数グループ識別子(ナル文字を含めて5バイト固定)を指定してください。
共通規則
留意事項
使用例
PDCNCTHDL型変数がCnctHdl,リターンコード受け取り変数がGetchdlRtn,環境変数グループ識別子変数がGroupNameの接続ハンドルを割り当てます。
EXEC SQL BEGIN DECLARE SECTION;
PDCNCTHDL CnctHdl;
long GetchdlRtn;
char GroupId[5];
EXEC SQL END DECLARE SECTION;
strcpy(GroupId,"HR01") ;
EXEC SQL GET CONNECTION HANDLE :CnctHdl,
:GetchdlRtn,
:GroupId;
DATA DIVISION.
WORKING-STORAGE SECTION.
EXEC SQL
BEGIN DECLARE SECTION
END-EXEC.
01 CNCTHDL SQL TYPE IS PDCNCTHDL.
01 GETCHDLRTN PIC S9(9) COMP.
01 GROUPID PIC X(5).
EXEC SQL
END DECLARE SECTION
END-EXEC.
:
PROCEDURE DIVISION.
:
MOVE 'HR01' & X'00' TO GROUPID.
EXEC SQL
GET CONNECTION HANDLE :CNCTHDL,
:GETCHDLRTN,
:GROUPID;
END-EXEC.
注意事項
HiRDBサーバが複数接続機能をサポートしていない場合,一つのトランザクションから同一のHiRDBに対して,複数のコネクションハンドルを使ってSQLを実行できません。実行した場合,HiRDBサーバがPac2354のコードでアボートし,トランザクションがロールバックされます。よって,同一トランザクション内で複数のコネクションハンドルを使ったSQL文は同時に実行できません。
接続先がそれぞれ異なるHiRDBであれば,同一トランザクション内で複数のコネクションハンドルを使用できます。
誤りの例を次に示します。
《HiRDB1をRM01とRM02で登録している状態》
tx_begin()
strcpy(grpnm, "RM01")
GET CONNECTION HANDLE :hCnct,:rc,:grpnm;
DECLARE CONNECTION HANDLE SET :hCnct;
SQL実行
strcpy(grpnm, "RM02")
GET CONNECTION HANDLE :hCnct,:rc,:grpnm;
DECLARE CONNECTION HANDLE SET :hCnct;
SQL実行
tx_commit()