gpt4 book ai didi

Oracle:仅回滚循环的崩溃迭代

转载 作者:行者123 更新时间:2023-12-01 09:59:30 24 4
gpt4 key购买 nike

如果一个或多个迭代崩溃,我需要帮助完成迭代回滚,并在它们成功时提交所有其他迭代。如果崩溃,它将回滚整个事务。认为这可以通过保存点来完成,但我对它们不是很熟悉。这是我尝试实现的一个基本示例。

    DECLARE 
...
BEGIN
FOR i IN 1 .. 10
LOOP
BEGIN
-- Some DML and stored procs with DML
INSERT INTO a .. .;
INSERT INTO b .. .;
INSERT INTO a .. .;
DELETE FROM a .. .;
UPDATE INTO c .. .;
m_package.some_proc_with_dml;
EXCEPTION
WHEN OTHERS THEN
merror := merror + || ', ' || + sqlerrm;
miserror := TRUE;
END;
END LOOP;

COMMIT;

IF miserror THEN
raise_application_error(-20000, merror);
END IF;

END;

提前致谢。

最佳答案

你可以设置一个SAVEPOINT,然后回滚到那个SAVEPOINT例如:

    DECLARE 
...
BEGIN
FOR i IN 1 .. 10
LOOP
BEGIN

SAVEPOINT my_savepoint_name;

-- Some DML and stored procs with DML
INSERT INTO a .. .;
INSERT INTO b .. .;
INSERT INTO a .. .;
DELETE FROM a .. .;
UPDATE INTO c .. .;
m_package.some_proc_with_dml;
EXCEPTION
WHEN OTHERS THEN
merror := merror + || ', ' || + sqlerrm;
miserror := TRUE;

ROLLBACK TO my_savepoint_name;

END;
END LOOP;

关于Oracle:仅回滚循环的崩溃迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440329/

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