グローバルトランザクション連携を行うには、SQL文の実行の前にdbenlistxatrans()を実行します。これにより、トランザクションがデータベース連携サービスによってXA配下に参加します。
method A{
dbenlistxatrans() /* XA配下であることを示す */
dbsqlexec() /* SQLの実行 */
}基本的なサーバアプリケーションの例を以下に示します。
DBPROCESS *dbproc_server1;
LOGINREC *login;
void
MethodA(CORBA_long param1)
{
TCHAR SqlStatement[STR_LEN*2];
/* XA配下のトランザクションである
dbenlistxatrans(dbproc_server1, TRUE);
/* SQL文の作成 */
sprintf(SqlStatement,
"update DOGDB..DOGTBL set DOGCOL002=DOGCOL002 + 1 where DOGCOL001 = %d",param1);
/* SQL文の送信 */
dbcmd(dbproc_server1, SqlStatement);
dbsqlexec(dbproc_server1);
dbresults(dbproc_server1);
}
int main()
{
: /*
: * CORBA_ORB_initなど準備処理
: */
login = dblogin();
DBSETLUSER(login, "monkey");
DBSETLPWD(login, "saru");
DBSETLAPP(login, "example");
dbproc_server1 = dbopen(login, "TIGER");
dbuse(dbproc_server1, "DOGDB");
CORBA_BOA_impl_is_ready( boa, impl, &env_g );
dbexit();
return 0;
}