一、效率比较
1.不适用批量:
declare
type id_table_type is table of number(6) index by binary_integer;
type name_table_type is table of varchar2(10) index by binary_integer;
id_table id_table_type;
name_table name_table_type;
start_time number(10);
end_time number(10);
begin
for i in 1..5000 loop
id_table(i) := i;
name_table(i) := 'name' || to_char(i);
end loop;
start_time := dbms_utility.get_time;
for i in 1..id_table.count loop
insert into demo values(id_table(i),name_table(i));
end loop;
end_time := dbms_utility.get_time;
dbms_output.put_line('总时间:'||to_char((end_time - start_time)/100));
end;
/
执行时间:0.25秒;
2.使用批量绑定:
declare
type id_table_type is table of number(6) index by binary_integer;
type name_table_type is table of varchar2(10) index by binary_integer;
id_table id_table_type;
name_table name_table_type;
start_time number(10);
end_time number(10);
begin
for i in 1..5000 loop
id_table(i) := i;
name_table(i) := 'name' || to_char(i);
end loop;
start_time := dbms_utility.get_time;
--使用批量提取:
forall i in 1..id_table.count
insert into demo values(id_table(i),name_table(i));
end_time := dbms_utility.get_time;
dbms_output.put_line('总时间:'||to_char((end_time - start_time)/100));
end;
/
执行时间:0.03秒 快了将近8倍
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、批量绑定语法:
bulk collect: 用于取得批量数据,只能用于select、fetch和DML返回子句中
forall:只适用于执行批量的DML操作
1.forall语句:
语法:
1) forall index in lower_bound..upper_bound
sql_statement;
2) forall index in indices of collection [between lower_bound and upper_bound]
sql_statement;
indices of 用于指定取得对应于collection集合元素下标的index值
3) forall index in values of index_collection
sql_statement;
value of 用于指定index值从集合变量index_collection中取得
注意:9i只能使用第一种
示例:
使用部分:
forall i in 8..10
insert into demo(id) values(id_table(i));
indices of:用于指定取得对应于collection集合元素下标的index值
id_table := id_table_type(1,null,3,null,5);
forall i in indices of id_table
delete from demo where id=id_table(i);
values of:用于指定index值从集合变量index_collection中取得
index_pointer := index_pointer_type(6,8,10);
forall i in values of index_pointer
insert into new_demo values(in_table(i),name_table(i));
--插入的是表的6 8 10位元素 因为i是从表里面取的
sql%bulk_rowcount:
专门为forall语句提供,作用是取得在执行批量绑定操作时第i个元素所作用的行数
用法:sql%bulk_rowcount(2);--返回第2个元素的SQL所作用的行数
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三、批量提取
declare
type emp_table_type is table of emp%rowtype index by binary_integer;
emp_table emp_table_type;
begin
select * bulk collect into emp_table from emp where deptno = &no;
....
end;
/
returning:返回受影响的数据
declare
type ename_table_type is table of emp.ename%type index by binary_integer;
ename_table ename_table_type;
begin
delete from emp where deptno = &no returning ename bulk collect into ename_table;
end;
/
分享到:
相关推荐
pl/sql例题代码pl/sql例题代码pl/sql例题代码
pl/sql developer11.0下载 pl/sql developer11.0下载 pl/sql developer11.0下载
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...
PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...
PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及...
PL/SQL developer 12.07 注册码 可以使用,不错,自己用过了,分享给大家
pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl...
最新pl/sql7.0中文手册
一个对数据库的操作工具PL/SQL,能够对ORACLE\SQL进行很好的帮助操作!
PL/SQL Developer 8.0.3 1510 含注册机 PL/SQL Developer is an Integrated Development Environment that is specifically targeted at the development of stored program units for Oracle Databases. Over ...
oracle10g pl/sql完备教程,供初学者学习与开发者参考
1、PL/SQL简介 2、PL/SQL基础 3、记录和表 4、在PL/SQL中使用SQL 5、内置SQL函数 6、游标 7、过程和函数 ...
很多时候你是不是为了32为的plsql的各种复杂配置烦恼,不要紧,现在下载64位的pl/sql,不需要繁琐的配置,让你更轻松
PL/SQL 程序设计 本章主要重点: PL/SQL概述 PL/SQL块结构 PL/SQL流程 运算符和表达式 游标 异常处理 数据库存储过程和函数 包 触发器
PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加...
PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加...
用PL/SQL 是 Oracle公司在标准 SQL 语言上进行一定的扩展而形成的一种数据库语言。它寄托于传统的 SQL 语句,同时又在功能上做了不少的扩充。PL/SQL 有着太多的优势,甚至让SQL 在它面前也黯然失色。 PL/SQL ...
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
DBATools For PL/SQL Developer 是一款PL/SQL Developer的辅助插件,主要功能是提供许多DBA数据库管理的功能,使ORACLE工程师不仅可以使用PL/SQL Developer进行开发设计,同时也可以进行数据库管理及监控,大大提高...