0

我有一个包含许多程序的 oracle 包。例如

pkg(
proc 1
proc 2
proc 3
);

在执行包 proc 1 时首先被调用,并且在 proc 1 中,proc 2 被调用。那么,如果我在 proc 2 中遇到异常,那么我想回滚在 proc 1 中完成的所有 DML。

4

2 回答 2

1

您无需执行任何操作,Oracle 将为您执行回滚。只是不要在这些过程中的任何地方提交 - 让调用者在一切完成后决定是否提交。

另外,不要 DDL,因为它会隐式提交到目前为止所做的所有事情。

于 2019-01-21T08:30:25.087 回答
0

除了 Littlefoot 提到的内容之外,请考虑您正在使用的任何 IDE。我向您推荐一些应该关闭的自动提交设置。否则,回滚将无济于事。

于 2019-01-22T17:32:57.897 回答