如何将组事务提交到oracle中的存储过程

如何将组事务提交到oracle中的存储过程,oracle,plsql,transactions,commit,Oracle,Plsql,Transactions,Commit,我有一个将数据插入表的过程,并在最后有一个commit语句。它提交对过程的每个调用并插入数据 create or replace procedure abc begin insert stmt; commit; end; 现在,我想知道是否有一种方法可以通过事务结束时的过程(组事务)将多个插入提交到表中。这意味着,我不希望每次调用过程时都提交(从前端),但在多次调用过程后,我需要提交该过程。尝试使用参数创建过程。该参数可以采用值:Y或N(或您需要的方式),并基于该值,您可以提交,也可

我有一个将数据插入表的过程,并在最后有一个commit语句。它提交对过程的每个调用并插入数据

create or replace procedure abc
begin 
  insert stmt;
  commit;
end;

现在,我想知道是否有一种方法可以通过事务结束时的过程(组事务)将多个插入提交到表中。这意味着,我不希望每次调用过程时都提交(从前端),但在多次调用过程后,我需要提交该过程。

尝试使用参数创建过程。该参数可以采用值:Y或N(或您需要的方式),并基于该值,您可以提交,也可以不提交

例如:

create or replace procedure abc (commit_y_n varchar2) as
begin 
insert stmt;
if abc.commit_y_n == 'Y' then {
commit;
}
end;

同时从过程中删除提交。将其移动到调用进程。例如:

Create or replace procedure procedure abc(p1 varchar2, p2 ...)
is
begin
    insert ....
end abc; 
然后,调用过程会变成类似于:

begin 
    for vars in (select c1, c2, ... from tab)
    loop
       ....
       abc(vars.v1, vars.c2, ...);
   end loop; 

   COMMIT;  -- only when transaction is complete;
end ; 

注;调用过程不必是plsql,它可以是任何可以建立数据库连接的东西。

如何执行该过程?