因系统历史遗留故障,导致有一张千万级别的表需要删除大概60w的错误数据,计划用批处理语句来循环删除,最近越发感到越来越菜,因此将这个批处理语句记录下来,以供日后温习。只作为处理,没有声明部分。
declare--声明
i int:=0;--定义变量并赋值
v_count int;--定义变量
v_loop int;--定义变量
begin--执行
select count(*) into v_count from t_181009;--删除数据总数
select ceil(v_count/1000) into v_loop from dual;--计算需要循环次数
while i<=v_loop loop--循环开始,循环条件
delete from t sb where exists ( select 1 from t_181009 bi where bi.imei = sb.imei) and rownum<=1000;--执行删除
commit;--提交
i:=i+1;--i依次加1
end loop;--结束循环
end;--结束
/