oracle 表删除大量数据,oracle存储过程删除大量表数据

create or replace procedure DeleteLog

is

pragma autonomous_transaction;

bus_delete number:=0;

node_delete number:=0;

begin

--循环开始

while 1=1 loop

--每次删除1000tiao

DELETE FROM 表1 t where t.RECORD_TIME < TRUNC(sysdate) - 90 and rownum <= 1000;

--如果没有删除数据,则跳出循环

IF SQL%NOTFOUND then

exit;

else

---将已删除的数据赋值到变量

bus_delete:=bus_delete + SQL%ROWCOUNT;

end if;

--提交

commit;

--循环结束

end loop;

commit;

loop

delete from 表2 t where t.RECORD_TIME < TRUNC(sysdate) - 90 and rownum <= 1000;

if SQL%NOTFOUND then

exit;

else

node_delete:=node_delete + SQL%ROWCOUNT;

end if;

commit;

end loop;

commit;

DBMS_OUTPUT.put_line('HIP_LOG_BUSINESS:' + bus_delete);

DBMS_OUTPUT.put_line('HIP_LOG_NODE:' + node_delete);

EXCEPTION

WHEN NO_DATA_FOUND

THEN

NULL;

WHEN OTHERS

THEN

-- Consider logging the error and then re-raise

RAISE;

end DeleteLog;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值