Oracle 高效清理数据
2016-09-08 14:55
274 查看
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; /
另可参考:http://blog.chinaunix.net/uid-411974-id-88377.html
相关文章推荐
- 高效删除Oracle中重复数据的方法
- 高效删除Oracle中重复数据的方法
- Informix迁移至Oracle-数据清理方案
- Oracle垃圾数据清理相关问题
- Oracle垃圾数据清理相关问题 分类: Oracle 2015-08-06 11:14 12人阅读 评论(0) 收藏
- ORACLE数据清理
- C#利用ODP.NET往oracle中高效插入百万数据
- 利用Oracle在线重定义Online Redefinition清理历史数据
- C#利用ODP.NET往oracle中高效插入百万数据
- Oracle的管道函数(Pipelined)为实际工作中的商业应用提供高效的数据解决方案
- 高效删除Oracle中重复数据的方法
- 利用Oracle在线重定义Online Redefinition清理历史数据
- 清理Oracle历史数据的准备工作
- 利用Oracle在线重定义Online Redefinition清理历史数据
- 利用Oracle在线重定义Online Redefinition清理历史数据
- 高效删除Oracle中重复数据的方法
- Oracle:高效删除Oracle中重复数据的方法
- 高效统计Oracle数据表条数
- ORACLE--分区表数据清理
- Oracle:高效插入大量数据经验之谈