oracle 防止其他DMLS由于另一个DML引发的错误而回滚

uyhoqukh  于 2023-03-17  发布在  Oracle
关注(0)|答案(2)|浏览(110)

我在PL/SQL中有一个匿名块:

begin
dml1
dml2
dml3
end;
/

我不希望在DML2抛出错误时回滚dml1dml3。我不能使用DBMS_ERRLOG和pragma autonous_transaction。我还有哪些其他选项?

eoxn13cs

eoxn13cs1#

只需处理DML2抛出的任何异常:

begin
  dml1;

  begin
    dml2;
  exception
    when others then
      null; -- or log, or report error, or whatever
  end;

  dml3;
end;
/
pkwftd7m

pkwftd7m2#

关键是异常处理。

begin
  begin 
    dml1
  exception
    when others then null; --- generally not indicated
     /*there should be an error handling section, or, at leasr
      an error logging procedure*/
  end;
  begin
    dml2
  exception
    when others then null; 
  end;

    dml3     
end;

异常处理的RTM,查看数据处理中可能发生的异常,并根据业务需求决定如何处理这些异常。

相关问题