XA_START 函数用于将当前会话与 xid
指定的事务分支相关联。
语法
DBMS_XA.XA_START (
xid IN DBMS_XA_XID,
flag IN PLS_INTEGER)
RETURN PLS_INTEGER;
参数解释
参数 | 解释 |
---|---|
xid | 请参见 DBMS_XA_XID 对象类型。 |
flag | 请参见 DBMS__XA 常量。 |
返回值
请参见 DBMS_XA 可能的常量返回值。
使用说明
如果在标识中指定了
TMJOIN
或TMRESUME
,则由xid
标识的现有事务分支为开始。当通过TMSUCCESS
标识分离事务时,应使用TMJOIN
标识。当使用TMSUSPEND
标识分离事务分支时,应使用TMRESUME
。可以使用任一标识调用 XA_START 以加入现有的事务分支。如果在标志中指定了
TMNOFLAGS
,并且未指定TMJOIN
和TMRESUME
,则将启动一个新的事务分支。如果xid
中指定的事务分支已经存在,则 XA_START 返回XAER_DUPID
错误码。可能的错误返回值包括:
XAER_RMERR
、XAER_RMFAIL
、XAER_DUPID
、XAER_OUTSIDE
、XAER_NOTA
、XAER_INVAL
和XAER_PROTO
。如果 XA_START 执行成功,则返回
XA_OK
。应用程序必须检查返回值并处理错误情况。仅当返回XA_OK
时,PL 应用程序才应继续执行其他操作。不支持事务堆栈。如果存在与当前会话关联的活跃事务,则可能不会调用该事务来启动或加入另一个事务。如果使用与该会话关联的活跃全局事务分支调用 XA_START,则将返回XAER_PROTO
。如果使用与当前会话关联的本地事务调用 XA_START,则将返回XAER_OUTSIDE
。