数据删除!

jackzhang168 2004-06-08 01:58:54
我是菜鸟!
我想删除一个表的数据,但数据量很大,删除时很慢,我想每删除1000条就COMMIT,不知SQL怎么写?
...全文
126 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackzhang168 2004-06-09
  • 打赏
  • 举报
回复
不是全部删除
用DELETE 很忙啊?
ronerlu 2004-06-09
  • 打赏
  • 举报
回复
不需要那么复杂吧!
一个for循环,然后循环内部:
delete from table where rownum<=1000 and 自定义条件;
commit;

就可以搞定了!
JuneYao 2004-06-09
  • 打赏
  • 举报
回复
下一个文件,如xxx.sql,如下:
set serveroutput on
declare
cursor call_ticket_cur//光标 is
select rowid from call_ticket10//表名 where state = '606';
curRec call_ticket_cur%rowtype;
record_count number(10);
begin
record_count := 0;
open call_ticket_cur;
loop
fetch call_ticket_cur into curRec;
exit when call_ticket_cur%notfound;

delete from call_ticket10 where rowid = curRec.rowid;
record_count := record_count + 1;
if mod(record_count,1000) = 0 then
commit;
end if;
end loop;
close call_ticket_cur;
dbms_output.put_line('Process records: '||record_count);
commit;
end;
/

如xxx.sql放在C:,可在sqlplus中用户登陆后执行@c:\xxx.sql
或直接在cmd模式下执行sqlplus UserName/Password@Server @c:\xxx.sql
beckhambobo 2004-06-08
  • 打赏
  • 举报
回复
当然保留表结构
waxle 2004-06-08
  • 打赏
  • 举报
回复
用truncate和delete除了在删除整张表和回滚方面有区别外,还有什么区别呢??比较深层的??
是不是truncate的作用就是快速删除表中的数据而保留表的结构呢???
zwj0712 2004-06-08
  • 打赏
  • 举报
回复
同意二楼主的方法!
dinya2003 2004-06-08
  • 打赏
  • 举报
回复
如果是全表删除的话就用TRUNCATE,也可以用delete
如果部分删除的话用delete .
区别:truncate删除整个表的数据,不分配回滚段,删除不可以回滚.
delete删除时可以回滚的.
liangwqtps 2004-06-08
  • 打赏
  • 举报
回复
如果是全表删除,不如TRUNCATE TABLE TABLENAME

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧