PLSQL:如何在存储过程中进行中间提交

时间:2016-04-13 15:14:50

标签: oracle11g

我有这样的场景:

Create Table Tmp_Test(id NUMBER);

CREATE OR REPLACE PROCEDURE Tmp_test_cmt
AS 
BEGIN
  SAVEPOINT A;

      If (Some condition)
       THEN
       INSERT INTO Tmp_Test VALUES(2);
       Other_SP_CALL;
         Commit;
       END IF

     -- Further business logic --
  COMMIT;

  EXCEPTION 
          WHEN OTHER THEN
          ROLLBACK TO SAVEPOINT A;
END;

我打算在我的SP内部进行中间提交,如果出现任何问题则回滚整个转换,否则最后执行转换。但是如果任何提交遭到攻击那么我就会收到错误" ORA-01086:savepoint' A'从未建立"

实际上我以前有SQL SERVER的经验,我们可以使用中间提交,但单个Rollback将撤消所有更改。

我也在PLSQL中计划这样做,以便进行中间提交并在出现问题时进行完全回滚。请建议如何实现这一目标。

0 个答案:

没有答案