• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

如何有条件的分步删除数据表中的记录

发布: 2007-7-02 11:08 | 作者: admin | 来源: | 查看: 8次 | 进入软件测试论坛讨论

领测软件测试网 如何有条件的分步删除数据表中的记录作者:eygle出处:http://blog.eygle.com日期:February 22, 2005
« 自己动手,丰衣足食 | Blog首页
有时候我们需要分配删除数据表的一些记录,分批提交以减少对于Undo的使用,本文提供一个简单的存储过程用于实现该逻辑。
你可以根据你的需要进行适当调整,本例仅供参考:


SQL> create table test as select * from dba_objects;Table created.SQL> create or replace procedure deleteTab 2 /** 3 ** Usage: run the script to create the proc deleteTab 4 ** in SQL*PLUS, type "exec deleteTab(@#Foo@#,@#ID>=1000000@#,@#3000@#);" 5 ** to delete the records in the table "Foo", commit per 3000 records. 6 ** 7 **/ 8 ( 9 p_TableName in varchar2, -- The TableName which you want to delete from 10 p_Condition in varchar2, -- Delete condition, such as "id>=100000" 11 p_Count in varchar2 -- Commit after delete How many records 12 ) 13 as 14 pragma autonomous_transaction; 15 n_delete number:=0; 16 begin 17 while 1=1 loop 18 EXECUTE IMMEDIATE 19 @#delete from @#||p_TableName||@# where @#||p_Condition||@# and rownum <= :rn@# 20 USING p_Count; 21 if SQL%NOTFOUND then 22 exit; 23 else 24 n_delete:=n_delete + SQL%ROWCOUNT; 25 end if; 26 commit; 27 end loop; 28 commit; 29 DBMS_OUTPUT.PUT_LINE(@#Finished!@#); 30 DBMS_OUTPUT.PUT_LINE(@#Totally @#||to_char(n_delete)||@# records deleted!@#); 31 end; 32 /Procedure created.SQL> insert into test select * from dba_objects;6374 rows created.SQL> /6374 rows created.SQL> /6374 rows created.SQL> commit;Commit complete.SQL> exec deleteTab(@#TEST@#,@#object_id >0@#,@#3000@#)Finished!Totally 19107 records deleted!PL/SQL procedure successfully completed.

很简单,但是想来也有人可以用到。

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网