BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer用法笔记

例1: 批量查询项目资金账户号为 "320001054663"的房屋账户信息并把它们打印出来 .

DECLARE
   TYPE acct_table_type IS TABLE OF my_acct%ROWTYPE INDEX BY BINARY_INTEGER;
   v_acct_table acct_table_type;
BEGIN
    ';
    ..v_acct_table.COUNT LOOP
           ---循环打印
           dbms_output.put_line('ACCT:'||v_acct_table(i).fund|| ','||v_acct_table(i).bal||','||v_acct_table(i).real_nmbr);
   END LOOP;
END;

说明部分:
1. DECLARE  说明以下你要声明的部分
2. Type 声明是类型acct_table_typ e 类型的名字
3. IS TABLE OF  指定是一个集合的表的数组类型, 简单的来说就是一个可以存储一列多行的数据类型 , my_acct指出在哪个表上( 存在的表 ) %ROWTYPE 指在表上的行的数据类型.
4. INDEX BY BINARY_INTEGER  指索引组织类型
5. v_acct_table 定义一个变量来存储集合数据类型
6. BULK COLLECT INTO  指是一个成批聚合类型, 简单的来说 , 它可以存储一个多行多列存储类型 ,into 后面指定从哪里来 ,
7. v_acct_table.COUNT 用来 v_acct_table 里面的数量
8. (i)表示下标号

例2: 批量更新项目资金账户号为 "320001054663"的房屋账户的余额。

DECLARE
   TYPE fund_table_type IS TABLE OF acct.fund%TYPE;
   TYPE bal_table_type IS TABLE OF acct.bal%TYPE;
   v_fund_table fund_table_type;
   v_bal_table bal_table_type;
BEGIN
     ' RETURNING fund,bal BULK COLLECT INTO v_fund_table,v_bal_table;
    ..v_fund_table.COUNT LOOP
           dbms_output.put_line('ACCT:'||v_fund_table(i)||','||v_bal_table(i));
   END LOOP;
END; 

说明部分:
1. %TYPE和 acct.fund数据类型一样
  v_fund_table fund_table_type;
2. v_bal_table bal_table_type; 定义变量来存储它们 .
3. RETURNING 用来指定要返回的部分 ,BULK COLLECT INTO  成批聚合类型
4. 用for  把它们打印出来

总结 :

  • 实验时把set serveroutput on  打开
  • 以上的例子的目的主要是为了提高性能. 这里的性能主要指的是速度  .
  • 速度指的是批量插入, 更新 , 删除  , 为什么会提高速度呢 ?  提取到的数据都在内存中进行处理, 因为在内存处理比较快 , 这是常识 .

@author:zhengwei

@date:2017-04-28

Oracle批量查询、删除、更新使用BULK COLLECT提高效率的更多相关文章

  1. 简单的php Mysql类(查询 删除 更新)

    php Mysql类一般都包括了几乎我们常用的数据库操作方法,这里只提供了查询 删除 更新三种操作,算不是很全只是一个简单的数据库查询类了.      代码如下 复制代码 class mysql { ...

  2. Mybatis批处理(批量查询,更新,插入)

    mybatis批量查询 注意这里的 in 和   <trim prefix="(" suffix=")"> 以及 in ( )的三种方式的(例1(推 ...

  3. oracle数据库查询和更新

    package sqltest; import java.sql.*; import parameter.BaseCanShu; public class PublicDbOracle { stati ...

  4. Oracle 创建,查询,删除 job

    一 . 创建job 1. 通过创建存储过程的方式创建job 调用该存储过程使其开始执行  call PRO_DSJ_XJTJ_JOB(); create or replace procedure PR ...

  5. Redis批量查询删除KEYS

    对腾讯云的Redis集群不支持很多指令(config get * .flushdb.flushall.等相关指令) redis指令限制:https://www.qcloud.com/document/ ...

  6. Mybatis 向oracle批量插入与更新数据

    插入 <insert id="batchSave" parameterType="java.util.List"> INSERT INTO T_UP ...

  7. Oracle空查询删除

           

  8. Oracle性能优化之表压缩及并行提高效率的测试

    1.制作测试表 create table t1 as select * from FW_T_GTXLOG insert into t1 select * from t1; create table t ...

  9. oracle学习之bulk collect用法

    通过bulk collect减少loop处理的开销,使用Bulk Collect提高Oracle查询效率 Oracle8i中首次引入了Bulk Collect特性,该特性可以让我们在PL/SQL中能使 ...

随机推荐

  1. SSH实现无密码验证登录

    http://blog.csdn.net/houqd2012/article/details/8544517

  2. R语言快速深度学习进行回归预测(转)

    深度学习在过去几年,由于卷积神经网络的特征提取能力让这个算法又火了一下,其实在很多年以前早就有所出现,但是由于深度学习的计算复杂度问题,一直没有被广泛应用. 一般的,卷积层的计算形式为: 其中.x分别 ...

  3. Shiny for Interactive Application Development using R(转)

    This slidify-based deck introduces the shiny package from R-Studio and walks one through the develop ...

  4. ArrayList源码解析(四)

    这篇文章主要看ArrayList的Iterator和ListIterator的实现. 1.Iterator和类Itr 当我们调用iterator方法时返回一个Iterator. /** * Retur ...

  5. Python 关于字符串处理技巧

    1.使用多个字符或字符串作为分隔符分割字符串 str.split()方法只能制定单个字符或字符串作为分割符, re.split()方法可以用正则表达式作为分割符, re.split()跟str.spl ...

  6. [Leetcode] Binary tree Zigzag level order traversal二叉树Z形层次遍历

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  7. solr学习笔记section2-solr单机(节点)简单的core操作

    在上一节中我们已经成功部署和运行了一个solr应用,那么我们就可以通过这个正在运行的solr来创建一些文档,并进行搜索. 首先介绍一下core这个概念,core在solr中类似与关系型数据库中一张表的 ...

  8. 匿名属性 anonymous property

    利用匿名属性可以用很简洁的语法来自动声明不可变(immutable)的元组(tuple)类型. 属性:在字段用来表示类型和对象的状态的前提下,希望状态不被随意的更改,字段一般应该设置为private, ...

  9. [编织消息框架][netty源码分析]5 eventLoop 实现类NioEventLoopGroup职责与实现

    分析NioEventLoopGroup最主有两个疑问 1.next work如何分配NioEventLoop 2.boss group 与child group 是如何协作运行的 从EventLoop ...

  10. 关于getHTML()方法和getHtmlAjax()方法 GetHttpLength, 清除HTML标签

    public string getHtml(string Url, string type = "UTF-8") { try { System.Net.WebRequest wRe ...