我有一个向表中插入数据的过程,最后有一条commit语句。它提交对该过程的每个调用并插入数据。
create or replace procedure abc
begin
insert stmt;
commit;
end;
现在,我想知道是否有一种方法可以通过事务(组事务)结束时的过程提交多个插入到表中。这意味着,我不想每次调用过程时都提交(从前端),但在多次调用过程之后,我需要提交该过程。
发布于 2019-05-15 14:23:01
一起从过程中删除提交。将其移动到调用进程。例如:
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,它可以是任何可以建立数据库连接的东西。
发布于 2019-05-15 13:40:05
尝试使用参数创建过程。该参数可以接受以下值:Y或N(或者您需要的方式),根据该值,您可以提交或不提交。
示例:
create or replace procedure abc (commit_y_n varchar2) as
begin
insert stmt;
if abc.commit_y_n == 'Y' then {
commit;
}
end;
https://stackoverflow.com/questions/56150674
复制相似问题