赛迪网 > IT技术 数据库 > 精彩更新
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

用一个存储过程实现分步删除数据表记录

发布时间:2008.04.10 05:02     来源:赛迪网    作者:Alizze

【赛迪网-IT技术报道】简介在实际的工作和学习中,我们需要分步删除数据表的一些记录,分批提交用以减少对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.

(责任编辑:卢兆林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 教你快速掌握DB2数据库创建外键时的选项 (04-06) · 存储课堂:DB2数据仓库系统下配置存储带宽 (03-26)
· IBM DB2数据库缓冲区溢出及拒绝服务漏洞 (01-29) · 关注:IBM DB2 9:毒蛇为什么会这样“毒” (11-05)
· 专题:解析DB2中的疑难问题 (11-04) · 教你轻松的掌握DB2数据库中的数据移动 (09-19)
· 细化解析:DB2 universal database进程 (09-19) · 细化解析:带你轻松掌握执行DB2的命令 (09-19)
· 解析:带你轻松了解DB2与Informix比较结果 (09-17) · DB2中实现Oracle的相关功能 (09-05)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 雅虎称目前无计划进军网游 仍然专注电子商务
· 移动电子商务发展迅速 发短信可查企业情况
· IT服务商面临挑战 HR自行开发or选择成熟产品
· 通方期货CRM解决方案 房地产行业CRM解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统