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. Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置

    最近入手一台GTX 1070的笔记本,手痒想在win10上试下GPU跑模型,所以就有了接下来的安装GPU版mxnet的坎坷历程,经过多重试验终于搞定了python和R安装mxnet,现将主要点记录如下 ...

  2. iOS安全攻防之阻止GDB依附

    GDB是大多数hackers的首选,阻止GDB依附到应用的常规办法是: #import <dlfcn.h> #import <sys/types.h> typedef int ...

  3. iOSNsPredicate Appium 定位元素

    Appium使用WebDriverAgent之后,新增了一种定位方法iOSNsPredicate,总结了一下使用方法: MobileElement photo = driver.findElement ...

  4. Java之【线程通信】--标志位练习2

    定义一个线程A,输出1 - 10之间的整数,定义一个线程B,逆序输出1 - 10之间的整数,要求线程A和线程B交替输出 方法一:非标志位方法 package Homework; //1 定义一个线程A ...

  5. Python中Swithch Case语法实现

    而python本身没有switch语句,解决方法有以下3种:A.使用dictionaryvalues = { value1: do_some_stuff1, value2: do_some_stuff ...

  6. day_1_登录接口

    #/usr/bin/env python3# -*- coding: utf-8 -*-##This is an account login authentication##Version 1.0## ...

  7. Java经典编程题50道之五十

    有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件 "stud"中. public ...

  8. Vue 非父子组件通信

    组件是Vue核心的一块内容,组件之间的通信也是很基本的开发需求.组件通信又包括父组件向子组件传数据,子组件向父组件传数据,非父子组件间的通信.前两种通信Vue的文档都说的很清楚,但是第三种文档上确只有 ...

  9. oracle查询第一篇

    第一个小知识点: clear 在oracle中也可以用以清除屏幕上的内容 第二个小知识点: 在一个表中插入自身的查询结果 insert into my_table (id,name,age) sele ...

  10. Vulkan Tutorial 14 Integration pipeline

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 我们现在整合前几章节的结构体和对象创建图形管线!以下是我们现在用到的对象类型,作为一 ...