gpt4 book ai didi

oracle - 如何在 Oracle PLSQL 中提交单个事务

转载 作者:行者123 更新时间:2023-12-02 05:35:35 29 4
gpt4 key购买 nike

我需要编写一个 PL/SQL 过程,在这个过程中,我需要在其自己的事务范围内调用另一个过程,并提交它,无论主事务是否失败或提交。换句话说,我需要类似 REQUIRES NEW 事务传播的东西。

类似于:

procedure mainProcedure(arugements) is 
begin
// some statements
nestedProcedure(someArguments);
// some other statements
end;

procedure nestedProcedure(arguments) is
begin
// start a new transaction
// some statements, lock some objects!
// commit the new transaction and release locked objects
end;

我怎样才能实现这个目标?

最佳答案

看看Autonomous transation 。另请参阅演示

CREATE TABLE t (
test_value VARCHAR2(25));

CREATE OR REPLACE PROCEDURE child_block IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO t
(test_value)
VALUES
('Child block insert');
COMMIT;
END child_block;
/

CREATE OR REPLACE PROCEDURE parent_block IS

BEGIN
INSERT INTO t
(test_value)
VALUES
('Parent block insert');

child_block;

ROLLBACK;
END parent_block;
/

执行:

 -- empty the test table
TRUNCATE TABLE t;

-- run the parent procedure
exec parent_block;

-- check the results
SELECT * FROM t;

关于oracle - 如何在 Oracle PLSQL 中提交单个事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42107629/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com