Oracle 中使用fetch bulk collect into 批量效率的读取游标数据
发布时间:2020-12-12 14:12:54 所属栏目:百科 来源:网络整理
导读:http://blog.csdn.net/txj8859_1/article/details/49982037 mark 还没看 fetch bulk collect into 的使用格式是: fetch some_cursor collect into col1,col2 limit xxx 。col1、col2 是声明的集合类型变量,xxx 为每次取数据块的大小(记录数),相当于缓冲
http://blog.csdn.net/txj8859_1/article/details/49982037 mark 还没看 fetch bulk collect into 的使用格式是:fetch some_cursor collect into col1,col2 limit xxx。col1、col2 是声明的集合类型变量,xxx 为每次取数据块的大小(记录数),相当于缓冲区的大小,可以不指定 limit xxx 大小。下面以实际的例子来说明它的使用,并与逐条取记录的 fetch into 执行效率上进行比较。 01.
declare
02.
03.
--声明需要集合类型及变量,参照字段的 type 来声明类型
04.
type id_type is table of sr_contacts.sr_contact_id%type;
05.
v_id id_type;
06.
07.
type phone_type sr_contacts.contact_phone%type;
08.
v_phone phone_type;
09.
10.
type remark_type sr_contacts.remark%type;
11.
v_remark remark_type;
12.
13.
cursor all_contacts_cur is --用 rownum 来限定取出的记录数来测试
14.
select sr_contact_id,contact_phone,remark from sr_contacts where rownum <= 100000;
15.
16.
begin
17.
18.
open all_contacts_cur;
19.
loop
20.
fetch all_contacts_cur bulk collect into v_id,v_phone,v_remark limit 256;
21.
for i in 1..v_id. count loop --遍历集合
22.
--用 v_id(i)/v_phone(i)/v_remark(i) 取出字段值来执行你的业务逻辑
23.
null ; --这里只放置一个空操作,只为测试循环取数的效率
24.
end loop;
25.
exit when all_contacts_cur%notfound; --exit 不能紧接 fetch 了,不然会漏记录
26.
27.
close all_contacts_cur;
28.
;
declare
--声明变量,参照字段的 type 来声明类型
v_id sr_contacts.sr_contact_id%type;
v_phone sr_contacts.contact_phone%type;
v_remark sr_contacts.remark%type;
--用 rownum 来限定取出的记录数来测试
rownum <= 100000;
11.
begin
loop
16.
all_contacts_cur%notfound;
--用 v_id/v_phone/v_remark 取出字段值来执行你的业务逻辑
--这里只放置一个空操作,只为测试循环取数的效率
loop;
21.
sr_contacts%rowtype;
v_contacts contacts_type;
* rownum <= 10000;
10.
begin
v_contacts limit 256;
v_contacts. first .. v_contacts. last --用 v_contacts(i).sr_contact_id/v_contacts(i).contact_phone/v_contacts(i).remark
--的形式来取出各字段值来执行你的业务逻辑
23.
--遍历集合
--用 v_contacts(i).sr_contact_id/v_contacts(i).contact_phone/v_contacts(i).remark
--的形式来取出各字段值来执行你的业务逻辑
dbms_output.put_line(2000);
|
相关内容
- 关于Ax51的一个小程序(跟8086好像啊~~~怀念自学8086的那段
- iphone – 如何从shell脚本中读取plist信息(bundle id)
- STM32 启动文件选择
- 架构师之正则表达式(四)---------------从字符串中提取一串
- Cocos2d-X 学习笔记 19 cocos2d-x学习之自动内存管理和常见
- ruby-on-rails – 使用强参数插入和更新嵌套的`belongs_to`
- Ruby attr_accessor与getter / setter基准:为什么访问器更
- vtd xml example
- 【cocos2d-x 2.x 学习与应用总结】10: cocos2d-x自带的shad
- 如何将其他类路径依赖项传递给maven中的testCompile阶段