`
lixin_2002
  • 浏览: 21437 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

PL/SQL复习六 批量绑定

SQL 
阅读更多

一、效率比较

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;

/


 

分享到:
评论

相关推荐

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    pl/sql最新中文手册

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    PL/SQL是Oracle公司开发的一种过程化语言,全称为Procedural Language/Structured Query Language,它是SQL的一个扩展,专门用于处理Oracle数据库系统。这个“PL/SQL工具”显然是一个用于辅助管理和操作Oracle数据库...

    pl/sql developer11.0

    4. **数据操作**:PL/SQL Developer允许直接在界面中查看、插入、更新和删除数据库中的数据,同时支持生成SQL脚本进行批量操作。 5. **数据库连接**:软件支持多种方式连接到Oracle数据库,包括TNS连接、Easy ...

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...

    oracle pl/sql从入门到精通 配套源代码

    8. **性能优化**:如何编写高效的PL/SQL代码,使用绑定变量、避免全表扫描、索引优化等技巧。 通过这本书的配套源代码,读者将有机会实际操作这些概念,加深对Oracle PL/SQL的理解,并提升数据库开发技能。每个示例...

    pl/sql64位

    PL/SQL是Oracle数据库系统中的一个关键组件,全称为Procedural Language/Structured Query Language,是一种结合了SQL和过程编程语言的工具,主要用于编写数据库应用程序。64位的PL/SQL开发者工具对于那些处理大数据...

    oracle 9i pl/sql程序设计笔记

    ### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...

    Oracle PL/SQL程序设计(第5版)(上下册)

    - **性能优化**:提供多种提高PL/SQL程序性能的方法,例如使用绑定变量、减少网络往返次数等技术。 #### 六、高级PL/SQL主题 - **并发控制**:讨论并发控制机制,如锁、锁定模式及其对应用程序性能的影响。 - **...

    pl/sql 免安装,绿色版pl/sql

    1. **PL/SQL编程支持**:PL/SQL Developer内置了强大的PL/SQL编辑器,支持语法高亮、自动完成、错误检查等功能,使开发人员能够高效编写PL/SQL代码。此外,还具备代码折叠、查找替换、书签设置等实用功能,提高了...

    PL/SQL VCS插件安装包+PL/SQL

    PL/SQL VCS插件是为开发者提供的一种增强工具,它与PL/SQL Developer整合,目的是为了更好地管理和控制Oracle数据库中的SQL脚本和存储过程的版本。这个安装包结合了Version Control System (VCS)的功能,如Visual ...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    PL/SQL Developer 远程连接Oracle数据库

    PL/SQL Developer是一款专为Oracle数据库设计的集成开发环境,它极大地简化了PL/SQL语言的编写、调试和管理任务。远程连接Oracle数据库是PL/SQL Developer的一项关键功能,允许用户在本地计算机上操作和管理远程...

    PL/SQL 基本知识

    PL/SQL是Oracle数据库系统中的一个核心组件,全称为“Procedural Language/Structured Query Language”,它是SQL的扩展,增加了编程元素,使得开发者能够编写存储过程、函数、触发器等数据库应用程序。这篇博客主要...

    pl/sql快捷插件

    PL/SQL Developer是一款由Allround Automations公司开发的专门用于Oracle数据库管理的集成开发环境(IDE)。这款软件为Oracle数据库管理员、开发人员和测试人员提供了便捷的SQL和PL/SQL编写、调试和执行功能。而“pl...

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《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实例编程(PL/SQL经典书籍)

    Oracle PL/SQL是一种强大的编程语言,它将数据库管理和应用程序逻辑紧密结合起来,是Oracle数据库系统中的核心组件之一。这本书“Oracle PL/SQL实例编程”显然旨在深入讲解如何利用PL/SQL进行实际开发工作,通过实例...

    PL/SQL编程基础知识

    ### PL/SQL编程基础知识 #### 一、PL/SQL简介 PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库...

    PL/SQL User's Guide and Reference (官方CHM)

    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下载

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种结合了SQL语言与过程编程的语言,专为数据库管理和应用程序开发设计。PL/SQL全称为“Procedural Language/Structured Query Language”,它提供了丰富的控制...

Global site tag (gtag.js) - Google Analytics