ORACLE批量绑定FORALL与BULK COLLECT】的更多相关文章

FORALL与BULK COLLECT的使用方法: 1.使用FORALL比FOR效率高,因为前者只切换一次上下文,而后者将是在循环次数一样多个上下文间切换. 2.使用BLUK COLLECT一次取出一个数据集合,比用游标条取数据效率高,尤其是在网络不大好的情况下.但BLUK COLLECT需要大量内存. 例子: create table test_forall ( user_id number(10), user_name varchar2(20)); select into 中使用bulk c…
Oracle数据库之FORALL与BULK COLLECT语句 我们再来看一下PL/SQL块的执行过程:当PL/SQL运行时引擎处理一块代码时,它使用PL/SQL引擎来执行过程化的代码,而将SQL语句发送给SQL引擎来执行:SQL引擎执行完毕后,将结果再返回给PL/SQL引擎.这种在PL/SQL引擎和SQL引擎之间的交互,称为上下文交换(context switch).每发生一次交换,就会带来一定的额外开销.下面是一个示意图: 从Oracle 8i开始,PL/SQL得到了两点增强,可以将PL/S…
如果表结构只对应一个字段,可以 select col1 bulk collect into 变量,不用游标循环,简洁高效 create or replace function get_airway_subpoint(awid in number) return airway_subpnts_tab is --CREATE OR REPLACE TYPE AIRWAY_SUBPNTS_TAB  as table of number(11) v_ptns airway_subpnts_tab; --…
BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎.通常可以在SELECT INTO.FETCH INTO以及RETURNING INTO子句中使用BULK COLLECT.本文将逐一描述BULK COLLECT在这几种情形下的用法.    有关FORALL语句的用法请参考:批量SQL之 FORALL 语句 一.BULK COLLECT批量绑定的示例 [sql] view plaincopyprint? --下面的示例中使用了…
1.游标的含义 2.oracle 11g 中的三类游标的使用方式 3.oracle 11g中使用 fetch ... bulk collect into 进行批量.快速提取数据的方式 4.根据不同情况,选取不同的游标进行使用…
2014-10-04 Created By BaoXinjian…
BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎.通常可以在SELECT INTO.FETCH INTO以及RETURNING INTO子句中使用BULK COLLECT.本文将逐一描述BULK COLLECT在这几种情形下的用法. 一.BULK COLLECT批量绑定的示例 --下面的示例中使用了BULK COLLECT将得到的结果集绑定到记录变量中         DECLARE     TYPE emp_rec_typ…
我们知道PL/SQL程序中运行SQL语句是存在开销的,因为SQL语句是要提交给SQL引擎处理,这种在PL/SQL引擎和SQL引擎之间的控制转移叫做上下文却换,每次却换时,都有额外的开销.然而,FORALL和BULK COLLECT可以让PL/SQL引擎把多个上下文却换压缩成一个,这使得在PL/SQL中的要处理多行记录的SQL语句执行的花费时间骤降.       示例:一.BULK COLLECT将所得的结果集一次性绑定(全部) --下面的示例中使用了BULK COLLECT将得到的结果集绑定到记…
对于数据量较大的插入操作可采用此种方法操作,注意: limit减少内存占用,如果数据量较大一次性全部加载到内存中,对PGA来说压力太大,可采用limit的方法一次加载一定数量的数据,建议值通常为1000.使用limit时注意,循环的时候如果用while cursor_name%found loop,对于最后一次fetch的数据量不足设定值1000,%found条件就会不成立.示例使用v_oid_lst.count > 0作为判断条件. 在写plsql代码块,定义数值变量时,建议采用pls_int…
       用批量绑定(bulk binding)的方式.当循环执行一个绑定变量的sql语句时候,在PL/SQL 和SQL引擎(engines)中,会发生大量的上下文切换(context switches).使用bulk binding,能将数据批量的从plsql引擎传到sql引擎,从而减少上下文切换过程,提升效率.        在Oracle使用过程中经常会遇到需要插入大量数据的情况,这种情况下就可以使用Bulk Binding插入数据. 参考资料:Oracle逐行提交.批量提交及极限提速…