
declare
cursor mycursor is SELECT ROWID FROM TEST WHERE XXX=XXXX order by rowid; <--------按ROWID排序的Cursor,删除条件是XXX=XXXX,根据实际情
况来定。
type rowid_table_type is table of rowid index by pls_integer;
v_rowid rowid_table_type;
BEGIN
open mycursor;
loop
fetch mycursor bulk collect into v_rowid limit 1000; <--------每次处理1000行,也就是每1000行一提交
exit when v_rowidcount=0;
forall i in v_rowidfirstv_rowidlast
delete from test where rowid=v_rowid(i);
commit;
end loop;
close mycursor;
END;
/
用分析函数可以解决。
给你一个简单的例子,假设表 test1 有两个字段 ID 和 salary。
可以这么写这个语句:
select id , salary from
(select id , salary,
sum(salary) over (order by salary desc, id) sum1
from test1) a1
where a1sum1 <= (select sum(salary) 09 from test1) ;
begin
for i in 11000
loop
insert into t values('a'||i,i);
end loop;
commit;
end;
/
以上就是关于oracle 怎样每1000条删除全部的内容,包括:oracle 怎样每1000条删除、ORACLE怎么实现前多少列的和等于这些列所有值的和的90%、oracle中用循环插入1千行数据而且名字不一样怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)