一、效率比较
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;
/
分享到:
相关推荐
Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...
PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...
PL/SQL是Oracle公司开发的一种过程化语言,全称为Procedural Language/Structured Query Language,它是SQL的一个扩展,专门用于处理Oracle数据库系统。这个“PL/SQL工具”显然是一个用于辅助管理和操作Oracle数据库...
4. **数据操作**:PL/SQL Developer允许直接在界面中查看、插入、更新和删除数据库中的数据,同时支持生成SQL脚本进行批量操作。 5. **数据库连接**:软件支持多种方式连接到Oracle数据库,包括TNS连接、Easy ...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...
"Oracle资料学习PL/SQL必备"这个主题涵盖了对Oracle数据库系统以及PL/SQL编程语言的学习资源,特别是针对那些希望深入理解并掌握PL/SQL的初学者或专业人士。PL/SQL的基础部分是了解和使用Oracle数据库的关键,它包括...
8. **性能优化**:如何编写高效的PL/SQL代码,使用绑定变量、避免全表扫描、索引优化等技巧。 通过这本书的配套源代码,读者将有机会实际操作这些概念,加深对Oracle PL/SQL的理解,并提升数据库开发技能。每个示例...
PL/SQL是Oracle数据库系统中的一个关键组件,全称为Procedural Language/Structured Query Language,是一种结合了SQL和过程编程语言的工具,主要用于编写数据库应用程序。64位的PL/SQL开发者工具对于那些处理大数据...
### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...
- **性能优化**:提供多种提高PL/SQL程序性能的方法,例如使用绑定变量、减少网络往返次数等技术。 #### 六、高级PL/SQL主题 - **并发控制**:讨论并发控制机制,如锁、锁定模式及其对应用程序性能的影响。 - **...
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
1. **PL/SQL编程支持**:PL/SQL Developer内置了强大的PL/SQL编辑器,支持语法高亮、自动完成、错误检查等功能,使开发人员能够高效编写PL/SQL代码。此外,还具备代码折叠、查找替换、书签设置等实用功能,提高了...
PL/SQL VCS插件是为开发者提供的一种增强工具,它与PL/SQL Developer整合,目的是为了更好地管理和控制Oracle数据库中的SQL脚本和存储过程的版本。这个安装包结合了Version Control System (VCS)的功能,如Visual ...
PL/SQL Developer是一款专为Oracle数据库设计的集成开发环境,它极大地简化了PL/SQL语言的编写、调试和管理任务。远程连接Oracle数据库是PL/SQL Developer的一项关键功能,允许用户在本地计算机上操作和管理远程...
PL/SQL是Oracle数据库系统中的一个核心组件,全称为“Procedural Language/Structured Query Language”,它是SQL的扩展,增加了编程元素,使得开发者能够编写存储过程、函数、触发器等数据库应用程序。这篇博客主要...
PL/SQL Developer是一款由Allround Automations公司开发的专门用于Oracle数据库管理的集成开发环境(IDE)。这款软件为Oracle数据库管理员、开发人员和测试人员提供了便捷的SQL和PL/SQL编写、调试和执行功能。而“pl...
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
Oracle PL/SQL是一种强大的编程语言,它将数据库管理和应用程序逻辑紧密结合起来,是Oracle数据库系统中的核心组件之一。这本书“Oracle PL/SQL实例编程”显然旨在深入讲解如何利用PL/SQL进行实际开发工作,通过实例...
### PL/SQL编程基础知识 #### 一、PL/SQL简介 PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库...
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, ...