网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  用一个存储过程实现分步删除数据表记录     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:135次  录入:管理员--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数据库之中数据安全完全分析 07-07
statspack监控管理:定期清除1个月的数据 02-28
oracle用户密码含有特殊字符应当如何处理 (1) 04-03
轻松掌握Oracle中事务管理的概念 09-29
在Oracle 10gR2中设定指定的恢复点实现轻松闪回 08-05
详细讲解oracle表分区的相关概念及其优点 (1) 03-17
巧用外部表访问警告日志文件或跟踪文件 05-15
如何才能避免Oracle数据库的密码出现@符号 07-07
详细讲述 Oracle 密码丢失解决方法 05-13
正确认识oracle peeking绑定变量的控制 01-24
怎样在oracle中执行一次基本的快照复制 04-29
Oracle 10g中用FORALL处理非连续数组 04-23
创建一个表时表中列的顺序对性能的影响 (1) 03-28
Oracle中decode()函数的使用技巧 09-29
Oracle数据库异构服务原理及实例说明 04-11
oracle最强有力的辅助诊断工具sql_trace (1) 04-30
实例讲解oracle数据库无法启动的解决方法 01-28
Java连接Oracle数据库的各种方法 04-23
重建oracle数据库控制文件的简单方法 05-13
比较部分联机备份和常规操作生成的redo 03-05
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息