概述
2017-07-24 14:12:42
SQL内容:
1.一次性检索 100000 条数据。
2. 1000 条提交一次。
3.超过 100000 万条,重新打开游标,重新检索。
pl/sql内容如下:
1 CREATE OR REPLACE PROCEDURE P_MDF_TEST ( branchno1 in varchar ) 2 AS 3 cursor cur_inst is select plcno from t1test where 4 branch in ( select branchcode from t_test start with branchcode =branchno1 connect by prior branchcode = supercode ) 5 and primprdcode in ( '123', '234') 6 and ( InsExprtDate <> date '9999-12-31' or InsExprtDate is null ); 7 record cur_inst%rowtype; 8 i_count int; 9 iFlag int ; 10 -- v_end varchar2(30); 时间 11 BEGIN 12 dbms_output.put_line('开始执行'); 13 iFlag :=1; 14 loop 15 if iFlag = 0 then 16 exit; 17 end if; 18 i_count:=0; 19 open cur_inst; 20 if cur_inst%isopen then 21 loop 22 fetch cur_inst into record; 23 if cur_inst%notfound then 24 iFlag:=0; 25 exit; 26 end if ; 27 update t1test set InsExprtDate =date '9999-12-31' where plcno=record.plcno; 28 update t2test set InsExprtDate =date '9999-12-31' where plcno=record.plcno; 29 -- dbms_output.put_line(record.plcno); 30 i_count := i_count + 1; 31 if i_count >=1000 then 32 -- dbms_output.put_line(i_count); 33 -- select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') into v_end from dual; 34 -- dbms_output.put_line(v_end); 35 i_count:=0; 36 commit; 37 end if ; 38 if cur_inst%ROWCOUNT >=100000 then 39 -- dbms_output.put_line('进来了'); 40 -- dbms_output.put_line(cur_inst%ROWCOUNT); 41 exit ; 42 end if ; 43 end loop; 44 commit; 45 close cur_inst; 46 end if; 47 end loop; 48 dbms_output.put_line('执行结束'); 49 END;
新建测试窗口,执行以下内容:
begin -- Call the procedure p_mdf_test(branchno1 => '122'); end;
转载于:https://www.cnblogs.com/yueers/p/7228629.html
最后
以上就是灵巧楼房为你收集整理的oracle 存储过程循环打开游标数据处理的全部内容,希望文章能够帮你解决oracle 存储过程循环打开游标数据处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复