XA_START 函数用于将当前会话与 xid 指定的事务分支相关联。

语法

  1. DBMS_XA.XA_START (
  2. xid IN DBMS_XA_XID,
  3. flag IN PLS_INTEGER)
  4. RETURN PLS_INTEGER;

参数解释

参数

解释

xid

请参见 DBMS_XA_XID 对象类型

flag

请参见 DBMS__XA 常量

返回值

请参见 DBMS_XA 可能的常量返回值

使用说明

  • 如果在标识中指定了 TMJOINTMRESUME,则由 xid 标识的现有事务分支为开始。当通过 TMSUCCESS 标识分离事务时,应使用 TMJOIN 标识。当使用 TMSUSPEND 标识分离事务分支时,应使用 TMRESUME。可以使用任一标识调用 XA_START 以加入现有的事务分支。

  • 如果在标志中指定了 TMNOFLAGS,并且未指定 TMJOINTMRESUME,则将启动一个新的事务分支。如果 xid 中指定的事务分支已经存在,则 XA_START 返回 XAER_DUPID 错误码。

  • 可能的错误返回值包括:XAER_RMERRXAER_RMFAILXAER_DUPIDXAER_OUTSIDEXAER_NOTAXAER_INVALXAER_PROTO

  • 如果 XA_START 执行成功,则返回 XA_OK。应用程序必须检查返回值并处理错误情况。仅当返回 XA_OK 时,PL 应用程序才应继续执行其他操作。不支持事务堆栈。如果存在与当前会话关联的活跃事务,则可能不会调用该事务来启动或加入另一个事务。如果使用与该会话关联的活跃全局事务分支调用 XA_START,则将返回 XAER_PROTO。如果使用与当前会话关联的本地事务调用 XA_START,则将返回 XAER_OUTSIDE