bulk collect,forall,fetch..limit
来源:互联网 发布:会声会影做淘宝视频 编辑:程序博客网 时间:2024/05/21 10:25
bulk collect支持emp%rowtype形式
forall插入式不支持emp%rowtype形式,如果有多个字段,要定义多个数组来存放,如果插入前有判断条件,可以使用values of
关于limit参数
可以根据实际需要来调整limit参数大小,来达到你最优的性能。limit 参数会影响到 pga (程序全局区)的使用率。而且也可以在 fetch bulk 中省略 limit 参数,写成fetch all_contacts_cur bulk collect into v_contacts;
测试数据
create table T2
(
A CHAR(10),
B CHAR(10)
)
create table t3 as select * from t2
添加200条数据
begin
for i in 1..200 loop
insert into t2 values( ABS(MOD(DBMS_RANDOM.RANDOM,100)) ,TRUNC(100+900*dbms_random.value) );
commit;
end loop;
开始试验
declare
type RecTyp is RECORD(
t dbms_sql.varchar2_table,
b dbms_sql.varchar2_table);
l_rec RecTyp;
v_i int:=0;
cursor c is
select * from t2;
BEGIN
open c;
loop
fetch c bulk collect into l_rec.t,l_rec.b limit 50;
v_i:=v_i+1;
forall i in 1..l_rec.t.count
insert into t3(a,b) values(l_rec.t(i),l_rec.b(i));
exit when c%notfound;
end loop;
dbms_output.put_line(v_i);
commit;
close c;
end;
可以看到v_id的最终结果是5,也就是说游标循环了5次,也就是说结果批量取了四次;
forall的用法可以参照前面的文章<returning into>
declare
type description_table_type is table of t1.description%type;
type t1_table_type is table of t1%rowtype;
description_table description_table_type:=description_table_type('FIVE', 'SIX', 'SEVEN');
t1_table t1_table_type;
begin
forall i in description_table.first..description_table.last
insert into t1 values(t1_seq.nextval,description_table(i))
returning id ,description bulk collect into t1_table;
for i in t1_table.first..t1_table.last loop
DBMS_OUTPUT.put_line('INSERT ID=' || t1_table(i).id ||'DESC='|| t1_table(i).description);
end loop;
end;
forall的主要作用就是提高dml操作的效率
- bulk collect,forall,fetch..limit
- bulk collect,forall,fetch..limit
- bulk collect forall通过limit批量提交
- bulk collect limit和 forall 用法
- PLSQL Bulk Bind (FETCH BULK COLLECT INTO LIMIT)
- forall and bulk collect
- BULK COLLECT,FORALL
- Oracle Forall 与BULK COLLECT
- oracle forall 和 BULK COLLECT
- 大数据量下的DML操作 bulk collect into limit forall commit;
- 大数据量下的DML操作 bulk collect into limit forall commit;
- fetch bulk collect into 使用
- PLSQL Bulk Bind (FETCH BULK COLLECT INTO)
- ORACLE的BULK COLLECT和FORALL
- ,FORALL和bulk collect的使用
- FORALL与BULK COLLECT的使用方法:
- ORACLE 批量绑定 FORALL 与 BULK COLLECT
- oracle10g批量绑定forall bulk collect
- android(0)
- 导入Excel
- 详解如何对Hibernate进行优化的方案
- sql优化策略1
- IE8下DIV+CSS 背景图片 错位 问题
- bulk collect,forall,fetch..limit
- Visual C++线程同步技术剖析:临界区,时间,信号量,互斥量
- 委托
- Oracle没有on update cascade[转自LIVE Di 的文章]
- F5负载均衡器简明配置手册
- 计算机串口基本理论
- 数据导入SQL SERVER 2005中,可是提示无法建立数据流连接
- 百度之星2010 复赛第二场 第二题 题目 解题报告
- IT累但是充实