清理oracle 数据文件,Oracle 高效清理数据

declare

-- Local variables here

CURSOR CUR1 IS

SELECT ec.ROWID

from epcisbase.employee_channel ec, epcisbase.sas_employee t

where t.employee_code = ec.employee_code

and t.employee_channel in ('DS')

and ec.business_source_code = '2'

and ec.business_source_detail_code = '1'

and ec.channel_source_code = 'J'

and ec.channel_source_detail_code = 'H';

V_ROWID_TAB DBMS_SQL.UROWID_TABLE;

V_LIMIT PLS_INTEGER := 5000; -->定义了一个变量来作为LIMIT的值

V_COUNTER PLS_INTEGER := 0;

begin

OPEN CUR1;

LOOP

FETCH CUR1 BULK COLLECT

INTO V_ROWID_TAB -->FETCH时使用了BULK COLLECT子句

LIMIT V_LIMIT; -->使用LIMIT子句限制提取数据量

EXIT WHEN V_ROWID_TAB.COUNT = 0; -->注意此时游标退出使用了TMP_TAB.COUNT,而不是CUR1%NOTFOUND

V_COUNTER := V_COUNTER + 1; -->记录使用LIMIT之后FETCH的次数

if V_ROWID_TAB.count > 0 then

forall j in V_ROWID_TAB.FIRST .. V_ROWID_TAB.LAST

delete epcisbase.employee_channel ec

where ROWID = V_ROWID_TAB(j);

end if;

commit;

END LOOP;

CLOSE CUR1;

end;

/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值