create or replace procedure Unique_Record_In_Zhk(partition_name in varchar2) is
--变量声明
TYPE dynamic_cur IS REF CURSOR;
cur dynamic_cur;--动态游标
select_sql varchar2(200);
V_rowid varchar2(50);
rowid_tmp varchar2(50);
counts number := 0;
id varchar2(190);
id_tmp varchar2(190);
TYPE TAB_ID IS TABLE OF t_zhk.ID%TYPE;
TYPE TAB_ROWID IS TABLE OF rowid;
id_type TAB_ID;
rowid_type TAB_ROWID;
--结束变量声明
begin
select_sql := ('select id, rowid from ' || partition_name || ' order by id');
open cur for select_sql;
LOOP
/* 当用FETCH已经取到游标的末尾时,再对游标进行取值,游标会返回结果集中的最后一条记录,
* 因为,当游标再结果集中取不到值时会返回给用户游标缓冲区的内容(也就是结果集中的最后一条记录)*/
FETCH cur BULK COLLECT INTO id_type, rowid_type limit 100000;
for id_index in 1 .. id_type.COUNT
LOOP
id := id_type(id_index);
V_rowid := rowid_type(id_index);
if (id_tmp is not null) then
begin
if (id = id_tmp) then
execute immediate 'delete from ' || partition_name || ' where rowid = :rowid_tmp' using rowid_tmp;
counts := counts + 1;
end if;
end;
end if;
id_tmp := id;
rowid_tmp := V_rowid;
if (mod(counts,2000) = 0) then
commit;
end if;
END LOOP;
EXIT WHEN cur%NOTFOUND;
end LOOP;
close cur;
commit;
dbms_output.put_line(to_char(counts));
end Unique_Record_In_Zhk;
将分区名作为参数传入存储过程,生成动态游标,以10万为一个批次进行批量提取数据。数据按ID做了排序,删除重复的ID记录,保留一条即可。删除记录的时候使用了变量替换,每删除2000条记录提交一次事务。
分享到:
相关推荐
Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据
采用bulk collect可以将查询结果一次性地加载到collections中。...可以在select into,fetch into,returning into语句使用bulk collect。注意在使用bulk collect时,所有的into变量都必须是collections.
在一般的情况下,使用批量fetch的几率并不是很多,但是Oracle提供了这个功能我们最好能熟悉一下,说不定什么时候会用上它。 代码如下:declare cursor c1 is select * from t_depart; v_depart t_depart%...
Oracle 遍历游标的四种方式(for、fetch、while、bulk collect+forall) 2.问题分析 我们可以把游标想象成一张表,想要遍历游标,就要取到游标的每行数据,所以问题的关键就成了:如何取到行数据? 3.解决方案 ...
bulk collect在 select ... into、fetch ... into、returning ... into中的应用。
主要介绍了javascript实现fetch请求返回的统一拦截,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Fetch Robot
fetch请求超时,在fetch的基础上做的可以设置超时时间的 javascript 插件,具体使用请查看我的博客 https://blog.csdn.net/yumikobu/article/details/80167982
本文通过实例代码给大家介绍了JavaScript 用fetch 实现异步下载文件功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
西门子 TCP通信中的Fetch和Write用法,PLC侧无需编程,公开的通信格式
Autonomy提供的OracleFetch用户手册
iOS 7学习:多任务处理之Background Fetch对应的Demo,已经修正不断Background Fetch中出现的多线程锁问题。
Fetch error error fetch fetch
electron-main-fetch:在Electron的主要进程中使用浏览器Fetch API
前端项目-fetch,fetch是window.fetch的javascript polyfill。全局fetch函数是web请求和处理响应的简单方式,不使用xmlhttprequest。这个polyfill编写的接近标准的fetch规范。
react native 使用 fetch 进行网络请求,fetch 的封装以及调用实例 (fetch demo) 1》下载该文件 2》使用命令行工具输入命令:react-native init ZXJNetDemo 3》将下载的文件中的.js 文件 放到刚生成项目的...
正确理解hibernate fetch 的作用
Laravel开发-fetch 把你雄辩的模特拿来
JavaScript - Fetch实现短信验证码注册登录完整示例:JavaScript - Fetch.js和附件说明