欢迎来到天天文库
浏览记录
ID:34722978
大小:53.22 KB
页数:7页
时间:2019-03-10
《fetchbulkcollectinto批量效率的读取游标数据》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Oracle中使用fetchbulkcollectinto批量效率的读取游标数据时间:2011-09-21相关文章:·oracle的存储过程指南·如何使用ADO访问Oracle数据库存储过程·OracleSpatial时态空间数据库设计·oracle数据库在linux上的安装·oracle同义词、序列、视图·oracle数据库性能优化-降低IO·教你Oracle的数据缓冲区是如何工作·Oracle数据库文件恢复与备份思路·Oracle10G默认用户名密码及解锁·IBM对OracleNoSQL数据库做出回应[网站建设之]Orac
2、le中使用fetchbulkcollectinto批量效率的读取游标数据通常我们获取游标数据是用fetchsome_cursorintovar1,var2的形式,当游标中的记录数不多时不打紧。然而自Oracle8i起,Oracle为我们提供了fetchbulkcollect来批量取游标中的数据,存中即是合理的。它能在读取游标中大量数据的时候提升效率,就像SNMP协议中,V2版比V1版新加了GET-BULKPDU一样,也是用来更高效的批量取设备上的节点值(原来做过网管软件开发,故联想到此)。 fetchbulkcollecti
3、nto的使用格式是:fetchsome_cursorcollectintocol1,col2limitxxx。col1、col2是声明的集合类型变量,xxx为每次取数据块的大小(记录数),相当于缓冲区的大小,可以不指定limitxxx大小。下面以实际的例子来说明它的使用,并与逐条取记录的fetchinto执行效率上进行比较。测试环境是Oracle10g 10.2.1.0,查询的联系人表sr_contacts中有记录数1802983条,游标中以rownum限定返回的记录数。 使用fetchbulkcollectinto获取游标
4、数据 declare --声明需要集合类型及变量,参照字段的type来声明类型 typeid_typeistableofsr_contacts.sr_contact_id%type; v_idid_type; typephone_typeistableofsr_contacts.contact_phone%type; v_phonephone_type; typeremark_typeistableofsr_contacts.rem
5、ark%type; v_remarkremark_type; cursorall_contacts_curis--用rownum来限定取出的记录数来测试 selectsr_contact_id,contact_phone,remarkfromsr_contactswhererownum<=100000; begin openall_contacts_cur; loop fetchall_contacts_curb
6、ulkcollectintov_id,v_phone,v_remarklimit256; foriin1..v_id.countloop--遍历集合 --用v_id(i)/v_phone(i)/v_remark(i)取出字段值来执行你的业务逻辑 null;--这里只放置一个空操作,只为测试循环取数的效率 endloop; exitwhenall_contacts_cur%notfound;--exit不能
7、紧接fetch了,不然会漏记录 endloop; closeall_contacts_cur; end; declare --声明需要集合类型及变量,参照字段的type来声明类型 typeid_typeistableofsr_contacts.sr_contact_id%type; v_idid_type; typephone_typeistableofsr_contacts.contact_phone%type; v_phonephone_type;
8、 typeremark_typeistableofsr_contacts.remark%type; v_remarkremark_type; cursorall_contacts_curis--用rownum来限定取出的记录数来测试 selects
此文档下载收益归作者所有