XA_END 関数は、現在のセッションと xid で指定されたトランザクション分岐の関連付けを解除するために使用されます。
制御スレッドがトランザクション分岐上のトランザクションを完了または一時停止する必要がある場合、トランザクションマネージャーは XA_END を呼び出します。アプリケーションがその作業の一部または全部を完了した場合(例えば、他の制御スレッドが分岐上で作業できるように特定のイベントをブロックする操作の前に)、XA_END が呼び出されます。XA_END が正常に戻り値を返すと、呼び出し元のスレッドは分岐と有効に関連付けられなくなりますが、分岐自体は存続します。
機能の適用範囲
この内容は OceanBase データベースEnterprise Edition にのみ適用されます。OceanBase データベースCommunity Edition は MySQL モードのみ提供しています。
構文
DBMS_XA.XA_END (
xid IN DBMS_XA_XID,
flag IN PLS_INTEGER)
RETURN PLS_INTEGER;
パラメータの説明
パラメータ |
説明 |
|---|---|
| xid | DBMS_XA_XIDオブジェクトタイプを参照してください。 |
| flag | XA_START関数とXA_END関数のflagフィールドで使用される定数を参照してください。 |
戻り値
DBMS_XA の可能な定数戻り値を参照してください。
返される可能性のあるエラーコードは、XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL, XAERPROTO および 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ステートメントを実行すると、OBE-02089:従属セッションでは COMMIT が許可されませんエラーが発生します。XA_ENDの後にCOMMITまたはROLLBACKステートメントを実行しても、xidで識別されたトランザクションには影響しません。なぜなら、そのトランザクションは既に現在のセッションと関連付けられていないからです。トランザクション ID をコミットするか、XA_ROLLBACK関数を使用してxidで指定されたトランザクションをコミット/ロールバックします。