我有一个由许多程序组成的oracle软件包。 例如
pkg(
proc 1
proc 2
proc 3
);
在执行程序包时,首先调用proc 1,在proc 1中调用proc 2。 所以,如果我在proc 2中遇到异常怎么办,那么我想回滚在proc 1中完成的所有DML。
答案 0 :(得分:1)
您无需执行任何操作,Oracle将为您执行回滚。只是不要在这些过程中的任何位置提交-在完成所有操作后,让调用方决定是否提交。
此外,请不要使用DDL,因为它会隐式提交到目前为止已完成的所有事情。
答案 1 :(得分:0)
除了Littlefoot提到的内容外,请考虑使用任何IDE。我建议您关闭自动提交的一些设置。否则,回滚将无济于事。