I'm getting the following error when trying to call a PL/SQL stored procedure from Java: ORA-02089: COMMIT is not allowed in a subordinate session
It tests fine from Oracle. Does anyone have any experience with this?
Try this ways;
What does the oracle documentation say about the error:
COMMIT was issued in a session that is not the two-phase commit global coordinator.
Basically you are executing a distributed transaction. As part of a distributed transaction you are trying to invoke an autonomous transaction. This is not possible as distributed transactions are required to do a 2PC.
Hmm, I think it's related to XA. It works fine when I bracket the stored procedure with AUTONOMOUS_TRANSACTION Pragma :
PROCEDURE foo (val IN VARCHAR2(4000)) is
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO tbl1 VALUES (val);
DELETE FROM tbl2;
COMMIT;
END foo;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.