网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  用一个存储过程实现分步删除数据表记录     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:137次  录入:管理员--2008-04-10  
 

【赛迪网-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.

 
 
上一篇: 实例讲解如何通过oracle成功发送邮件    下一篇: 通过意向锁多粒度封锁机制进行并发控制 (1)
  相关文档
oracle数据库中使用dbms_profiler进行调优 05-07
oracle 数据库唯一约束中的null的处理 09-05
做Oracle的和作茶叶蛋的没有本质的区别 09-01
Oracle 11g 新版数据库新增400余项技术 09-01
细化解析Oracle中限制返回结果集的大小 09-01
oracle数据库专享工具介绍:sql*loader (1) 09-09
通过JDBC连接Oracle数据库的十大技巧 04-11
教你在Oracle数据库中建立透明网关环境 04-11
讲解jython访问oracle数据库的具体步骤 03-19
Oracle中对像名大小写敏感性的深入解析 08-05
教你轻松解决不能一次创建多表的问题 11-15
怎样理解分布处理和分布式数据库 09-29
在oracle 10g中建立没有域名的db_link 03-21
教你轻松掌握如何把数据导入不同的表空间 11-15
轻松六步使你的Oracle存储过程迅速加密 05-27
Oracle Text 的体系结构及其使用 09-29
教你在Oracle中实现数据自动导入导出 04-12
你对Oracle数据库字符集究竟认识多少? 07-07
如何监控Oracle索引的使用完全解析 05-13
讲解sql server定时作业job的设置方法 07-28
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息