通过bulk collect减少loop处理的开销

发表人:logzgh | 发表时间: 2006年五月19日, 10:56
采用bulk collect可以将查询结果一次性地加载到collections中。
而不是通过cursor一条一条地处理。
可以在select into,fetch into,returning into语句使用bulk collect。
注意在使用bulk collect时,所有的into变量都必须是collections.

举几个简单的例子:
--在select into语句中使用bulk collect
DECLARE
TYPE SalList IS TABLE OF emp.sal%TYPE;
sals SalList;
BEGIN
-- Limit the number of rows to 100.
SELECT sal BULK COLLECT INTO sals FROM emp
WHERE ROWNUM <= 100;
-- Retrieve 10% (approximately) of the rows in the table.
SELECT sal BULK COLLECT INTO sals FROM emp SAMPLE 10;
END;
/
--在fetch into中使用bulk collect
DECLARE
TYPE DeptRecTab IS TABLE OF dept%ROWTYPE;
dept_recs DeptRecTab;
CURSOR c1 IS
SELECT deptno, dname, loc FROM dept WHERE deptno > 10;
BEGIN
OPEN c1;
FETCH c1 BULK COLLECT INTO dept_recs;
END;
/
--在returning into中使用bulk collect
CREATE TABLE emp2 AS SELECT * FROM employees;
DECLARE
TYPE NumList IS TABLE OF employees.employee_id%TYPE;
enums NumList;
TYPE NameList IS TABLE OF employees.last_name%TYPE;
names NameList;
BEGIN
DELETE FROM emp2 WHERE department_id = 30
RETURNING employee_id, last_name BULK COLLECT INTO enums, names;
dbms_output.put_line('Deleted ' || SQL%ROWCOUNT || ' rows:');
FOR i IN enums.FIRST .. enums.LAST
LOOP
dbms_output.put_line('Employee #' || enums(i) || ': ' || names(i));
END LOOP;
END;
/
DROP TABLE emp2;

转载于:https://blog.51cto.com/denver/51630

oracle学习总结三(bulk collect用法)相关推荐

  1. bulk怎么使用oracle,oracle学习之bulk collect用法

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

  2. oracle bulk select,批量查询 Oracle的bulk collect用法

    select object_id, object_name, object_type from dba_objects where wner = 'TEST'; 1.在select into语句中使用 ...

  3. Oracle 中使用 fetch bulk collect into 批量效率的读取

    http://www.jzxue.com/shujuku/oracle/201109/21-8976.html 通常我们获取游标数据是用 fetch some_cursor into var1, va ...

  4. Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据

    通常我们获取游标数据是用 fetch some_cursor into var1, var2 的形式,当游标中的记录数不多时不打紧.然而自 Oracle 8i 起,Oracle 为我们提供了 fetc ...

  5. oracle:oracle学习笔记(三)

    oracle:oracle基础知识(三):存储过程.函数笔记,赵强老师 对于视频中涉及java部分的章节省略: 文章目录 存储过程.存储函数 存储过程基本语法 存储函数 带in 和out 参数 存储过 ...

  6. ORACLE学习第三天

    1.创建oracle用户:create user test identified by test; 使用select * from dba_users可以查询到所有的用户 2.创建用户时指定表空间:c ...

  7. ORACLE学习(三)

    --数值函数 1.abs(值) 绝对值 正数的绝对值是它本身 负数是他的相反数 0是0 SELECT ABS(6),ABS(-5),ABS(0) FROM DUAL; 2.MOD(数1,数2) 取余 ...

  8. oracle学习笔记三

    函数   字符函数      字符串大小写转换  LOWER (strexp)  返回字符串,并将所有的字符小写  UPPER (strexp)  返回字符串,并将所有的字符大写   INITCAP( ...

  9. oracle是dbms还是dbs,Oracle学习笔记三——DBS

    数据库系统 DBS 即Database System,中文意为"数据库系统",是指带有数据库并利用数据库技术进行数据管理的计算机系统. 什么是数据库系统? 数据库系统DBS(Dat ...

最新文章

  1. [转] 为什么javascript是单线程的却能让AJAX异步调用?
  2. 如何理解delegate (委托)设计模式
  3. linux php7 安装redis扩展(php7可以使用自测)
  4. 5、shader混合(Blending)、雾
  5. criscriter英语测试软件,iTEST大学英语测试与训练系统
  6. 深入探究ASP.NET Core Startup的初始化
  7. 前端学习(2878):原生js模块化+发送弹幕和重置弹幕
  8. mysql 分页 jdbc_JDBC调用MySQL分页存储过程实现(一)
  9. echo添加换行 linux_在 Linux 上创建文件的 10 个方法
  10. 华为P50系列相机全球首发新技术:告别偏色做到真实原色捕捉
  11. pc控制iphone的软件_嗑技热点 | 苹果M1芯片:对PC行业的降维打击
  12. [Twisted] Protocols协议和Protocol Factories 协议工厂
  13. 设计模式(三)模版方法(行为型)
  14. 【学亮IT手记】Java 8新特性实例介绍
  15. Universal Link 用企业证书build包,可以通过链接拉起绑定的App(客户端)
  16. 微信抢号软件_强推|那些写微信公众号一定要拥有的软件
  17. jlink接口定义(jlink接口定义 swd4线)
  18. vue热敏打印机_如何在vue项目中调用打印机,打印指定区域
  19. 高速信号采集的相关知识
  20. 光照 (4) 漫反射光照

热门文章

  1. asp.net中DataGrid性能测试
  2. 二维码Aztec简介及其解码实现(zxing-cpp)
  3. 【Qt】ubuntu14.04.5 qt5.6中使用opencv3.4报错:Using GTK+ 2.x and GTK+ 3 in the same process is not supported
  4. java解析五元组_pcap文件解析,并且按照五元组分类
  5. 关于object references an unsaved transient instance - save the transient instance before flushing的解决方法
  6. 校园音乐点歌平台的设计与开发 微信小程序 推荐点歌 java 开发
  7. Element el-switch 组件样式修改 将文字显示到组件内
  8. php No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax跨域访问解决方法
  9. iOS开发系列--让你的应用“动”起来
  10. iOS 关于Blocks