4.6.3.2. RmSqlインタフェース

RmSqlインタフェースは、Microsoft SQL Serverを利用する場合にエンリストを実行するための機能を提供するためのインタフェースです。

RmSqlインタフェースには、次の関数があります。

is_new_sqlsession エンリストを行うべきかどうか問い合わせます。
register_sqlsession データベースとの接続で取得したハンドルを登録します。
get_sqlsession 登録済みのハンドルを取得します。

   
4.6.3.2.1. is_new_sqlsession

名称 is_new_sqlsession - エンリストを行うべきかどうかの確認
形式
 #include "otxscur.h"
CORBA::Boolean   is_new_sqlsession( long  sessid );
説明 is_new_sqlsessionは、現在実行中のトランザクションに、ハンドルを登録済みかどうかを示すBOOL値を返却します。アプリケーションオブジェクトの各メソッドの先頭で呼び出してください。
ハンドルとは、データベースとの接続を行った際に取得される値で、DBLibraryではDBPROCESS構造体を格納した領域を指すアドレス、ODBCではHDBCの値となります。

トランザクションに複数のハンドルが登録される場合などに、特定のハンドルが登録されているかどうかを問い合わせるためには、ハンドルを登録する際に指定したセッション識別子(0以外の値)をsessidに指定してください。sessidを問わず、トランザクションに1つ以上のハンドルが登録されているかどうかを問い合わせるためには、0をsessidに指定してください。

戻り値がCORBA_TRUEであれば、新たにデータベースとの接続を行った上で、エンリストを実施してください。アプリケーションは、新たに取得したハンドルをトランザクションに登録します。戻り値がCORBA_FALSEであれば、既にトランザクションに登録済みのハンドルを取得して利用してください。
戻り値 エンリストを実施する場合はCORBA_TRUEを、エンリストを実施しない場合はCORBA_FALSEを返します。
関連項目

   
4.6.3.2.2. register_sqlsession

名称 register_sqlsession - トランザクションにエンリストを実施したハンドルの登録
形式
 #include "otxscur.h"
long   register_sqlsession( long sessid,  void *handle,  int apitype,  int flag );
説明 register_sqlsessionは、エンリストを実施済みのハンドルをhandleに指定して登録します。

トランザクションに複数のハンドルを登録する場合、ハンドルの識別ができるよう0 以外の値をセッション識別子として sessid に指定してください。トランザクションに単一のハンドルを登録する場合は、0を sessid に指定してください。

apitypeには、SQLインタフェースのタイプを指定します。次のいずれかの値となります。
  • WEBOTXS_SQL_DBLIB
    SQLインタフェースにDB Libraryを使用します。
  • WEBOTXS_SQL_ODBC
    SQLインタフェースにODBCを使用します。
flagには、動作モードを指定します。次のいずれかの値となります。
  • WEBOTXS_SQL_SESSPOOL
    登録済みのハンドルをプーリングしておき、再利用することができます。アプリケーションは、ハンドルの解放を行う必要がありません。
  • WEBOTXS_SQL_SESSDELETE
    登録済みのハンドルをトランザクション完了後に自動的に解放します。アプリケーションは、ハンドルの解放を行う必要がありません。
  • WEBOTXS_SQL_NONE
    WebOTX Transaction Serviceではハンドルの解放を行いません。アプリケーションは、ハンドルの解放を行う必要があります。
戻り値
0以外 :正常終了
(有効なセッション識別子を返します。sessidに0以外の値を指定した場合、セッション識別子はsessidの値と一致します)
0 :異常終了
関連項目

   
4.6.3.2.3. get_sqlsession

名称 get_sqlsession - トランザクションに登録されているハンドルの取得
形式
 #include "otxscur.h"
void   *get_sqlsession ( long sessid,  int flag );
説明 get_sqlsessionは、登録済みのハンドルを取得します。
トランザクションに複数のハンドルが登録されている場合、ハンドルの識別ができるよう0 以外の値をセッション識別子として sessid に指定してください。トランザクションに単一のハンドルが登録されている場合は、0を sessid に指定してください。

flagには、動作モードを指定します。次のいずれかの値となります。
  • WEBOTXS_SQL_SESSPOOL
    未使用で、プールされているハンドルを取得します。例えば、エンリストを実施する際に、新規にデータベースとの接続を行うのではなく、プールされているハンドルを取得する場合にこのモードを指定します。
  • WEBOTXS_SQL_NONE
    トランザクションに登録済みのハンドルを取得します。
戻り値
NULL以外 :正常終了
(有効なハンドルを取得します。)
NULL :異常終了
関連項目