`
lixin_2002
  • 浏览: 20650 次
  • 性别: 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;

/


 

分享到:
评论

相关推荐

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    pl/sql developer11.0

    pl/sql developer11.0下载 pl/sql developer11.0下载 pl/sql developer11.0下载

    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以及如何...

    PL/SQL Developer9.06

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    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, ...

    Oracle PL/SQL语言初级教程

    PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及...

    PL/SQL developer 12.07 注册码 可以使用

    PL/SQL developer 12.07 注册码 可以使用,不错,自己用过了,分享给大家

    pl/sql develpment 8 下载

    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/sql最新中文手册

    最新pl/sql7.0中文手册

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

    一个对数据库的操作工具PL/SQL,能够对ORACLE\SQL进行很好的帮助操作!

    PL/SQL Developer v8.0.3 1510

    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

    oracle10g pl/sql完备教程,供初学者学习与开发者参考

    Pl/Sql程序设计

    1、PL/SQL简介 2、PL/SQL基础 3、记录和表 4、在PL/SQL中使用SQL 5、内置SQL函数 6、游标 7、过程和函数 ...

    pl/sql64位

    很多时候你是不是为了32为的plsql的各种复杂配置烦恼,不要紧,现在下载64位的pl/sql,不需要繁琐的配置,让你更轻松

    PL/SQL 程序设计

    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 客户端

    PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加...

    PL/SqlDeveloper汉化版

    用PL/SQL 是 Oracle公司在标准 SQL 语言上进行一定的扩展而形成的一种数据库语言。它寄托于传统的 SQL 语句,同时又在功能上做了不少的扩充。PL/SQL 有着太多的优势,甚至让SQL 在它面前也黯然失色。 PL/SQL ...

    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以及如何有效地使用它。...

    DBAtools for PL/SQL表空间管理器

    DBATools For PL/SQL Developer 是一款PL/SQL Developer的辅助插件,主要功能是提供许多DBA数据库管理的功能,使ORACLE工程师不仅可以使用PL/SQL Developer进行开发设计,同时也可以进行数据库管理及监控,大大提高...

Global site tag (gtag.js) - Google Analytics