GET CONNECTION HANDLE接続ハンドル取得

機能

X/Open XAインタフェース環境下で複数接続機能を使用する場合,UAPが使用する接続ハンドルを割り当てます。

形式

 GET CONNECTION HANDLE :PDCNCTHDL型変数,
                             :リターンコード受取変数,
                             :環境変数グループ識別子変数

オペランド

PDCNCTHDL型として宣言した埋込み変数を指定します。

INT型として宣言した埋込み変数を指定します。

リターンコード受け取り変数に返される値を次に示します。

C言語の場合
正常に取得された場合:
p_rdb_RC_NORM
何らかの障害が発生した場合:
各障害に対応したエラーコード
これらの値は,pdberrno.hに定義しています。
COBOL言語の場合
正常に取得された場合:
P_RDB_RC_NORM
これらの値は,SQLCAMTH.CBLに定義しています。

CHAR型(5バイト固定)として宣言した埋込み変数を指定します。

既定文字集合以外の文字集合は指定できません。

環境変数グループ識別子変数には,xa_open関数用文字列に指定した環境変数グループ識別子(ナル文字を含めて5バイト固定)を指定してください。

共通規則

  1. 使用する埋込み変数の宣言は,埋込み変数宣言部で行います。
  2. 接続ハンドルの取得に失敗した場合,その障害コードをリターンコード受け取り変数に設定します。

留意事項

  1. ここで取得した接続ハンドルでSQLを発行する場合は,DECLARE CONNECTION HANDLE SETで使用する接続ハンドルの宣言をしてください。
  2. COBOL言語の場合,環境変数グループ識別子変数に値を設定するときは,設定値の最後をナル文字にしてください。

使用例

PDCNCTHDL型変数がCnctHdl,リターンコード受け取り変数がGetchdlRtn,環境変数グループ識別子変数がGroupNameの接続ハンドルを割り当てます。

(C言語の場合)

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;

(COBOL言語の場合)

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()