重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
commit; --提交
创新互联建站是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:响应式网站设计、品牌网站制作、成都营销网站建设。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。成都网站设计、网站建设、外贸网站建设、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。
EXCEPTION WHEN OTHERS THEN --如果出错
ROLLBACK; --回滚
一处简单的plsql匿名块就可以达到这个目的:
begin
for i in 1..10000 loop
insert into t values(i);
if(mod(i,1000)=0) then commit;
end if;
end loop;
end;
oracle的提交用commit,一般commit用语update语句及insert语句中。
如,有以下两个语句:
update test set id=3 where id=2;
commit;
insert into test values (4,'王五');
commit;
如果进行了update及insert操作后不进行提交的话,那么修改或插入的数据只在当前session有效,并不会写入数据库,只有当commit(提交)后,才会生效。
可通过以下方法:
以100条数据为例,如果海量数据可参考。
如test表中有如下数据:
现要将begintime改成当前时间,每10条提交一次。
可用如下存储过程:
declare
i int;--定义变量
v_count int;--定义变量
v_loop int;--定义变量
begin
select count(*) into v_count from test;--计算表内数据总数
select ceil(v_count/10) into v_loop from dual;--计算需要循环次数
i:=1;--为i赋值
while i=v_loop loop--循环退出条件
update test set begintime=sysdate where begintime is null and rownum=10;--执行更新
commit;--提交
i:=i+1;--i依次加1
end loop;--结束循环
end;