XA_END 函数用于取消当前会话与 xid 指定的事务分支的关联。
当控制线程完成或需要暂停事务分支上的事务时,事务管理器将调用 XA_END,当应用程序部分或全部完成其工作时(例如,在阻止某个事件以使其他控制线程在分支上工作的操作之前),将调用 XA_END
。XA_END
成功返回值后,控制调用线程不再与分支有效关联,但分支仍然存在。
语法
DBMS_XA.XA_END (
xid IN DBMS_XA_XID,
flag IN PLS_INTEGER)
RETURN PLS_INTEGER;
参数解释
参数 | 解释 |
---|---|
xid | 请参见 DBMS_XA_XID 对象类型。 |
flag |
返回值
请参见 DBMS_XA 可能的常量返回值 。
可能返回的错误码是:XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL, XAER_PROTO 或 XA_RB*。
使用说明
可以在
flag
中指定TMSUCCESS
或TMSUSPEND
,如果返回值为XA_OK
,则事务分支与当前处于分离状态的会话解除关联。不支持TMFAIL
。可以使用TMSUCCESS
或TMSUSPEND
调用 XA_END,以将xid
标识的事务分支与当前会话解除关联。如果 XA_END 执行成功,则返回
XA_OK
。应用程序必须检查返回值并处理错误情况。仅当返回XA_OK
时,应用程序才应继续进行其他正常操作。在调用 XA_END 前执行
ROLLBACK
语句将回滚当前事务所做的更改。但是,在调用 XA_END 之前,事务上下文仍与当前会话关联。在调用 XA_END 前执行
COMMIT
语句将报错ORA-02089:从属会话中不允许 COMMIT
。在 XA_END 之后执行
COMMIT
或ROLLBACK
语句对xid
标识的事务没有影响,因为该事务不再与当前会话相关联。提交事务 ID 或 XA_ROLLBACK 函数来提交/回退xid
指定的事务。