`
king_tt
  • 浏览: 2260054 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle 游标处理II - 使用BULK COLLECT

 
阅读更多

以前写了一个Oracle 游标处理

http://hi.baidu.com/wangzhiqing999/blog/item/db33b52993b8e23a359bf774.html

是最原始的,一条一条处理的。如果数据量很大的话,采用这种一条一条的处理方式的话,效率会很低。

由于仅仅是为了演示语法,以及使用的例子,测试表还是使用上次的那个 只有3条记录的 test_main 表。

BULK COLLECT在数据量很大的时候,能够显著提升性能。

这里仅仅是语法上的演示。

LIMIT后面的数字,意味着每一批加载多少数据。


SQL> DECLARE

2--定义类型.

3TYPE test_type IS TABLE OFtest_main%ROWTYPE;

4test_data test_type;

5--定义游标.

6CURSOR c_test_main IS

7SELECT id, value FROMtest_main;

8BEGIN

9--打开游标.

10OPEN c_test_main;

11--开始循环

12LOOP

13--填充数据批量填充,每次读取2条.

14FETCHc_test_main

15BULKCOLLECTINTOtest_dataLIMIT2;

16

17--调试输出.

18FOR i IN 1..test_data.count

19LOOP

20dbms_output.put_line(test_data(i).value);

21END LOOP;

22

23--当没有数据的时候,退出。

24EXIT WHEN c_test_main%NOTFOUND;

25

26END LOOP;

27--关闭游标.

28CLOSE c_test_main;

29END;

30/

ONE

TWO

THREE

PL/SQL过程已成功完成。
分享到:
评论

相关推荐

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

    Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据 Oracle 中的游标数据读取是数据库开发中非常常见的操作。通常,我们使用 fetch some_cursor into var1, var2 形式来获取游标数据,当游标中的记录数...

    oracle游标使用及实例

    ### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常...

    oracle批量处理(bulk collect)

    ### Oracle批量处理(Bulk Collect) #### 一、概述 在Oracle数据库中,`BULK COLLECT` 是一种高效的数据检索机制,它允许一次性从数据库中提取多行数据,并将其存储在一个PL/SQL集合中。与传统的游标逐行处理相比,...

    oracle游标优化

    考虑使用集合操作(如`BULK COLLECT`)一次性获取所有数据。 2. **优化游标查询**: - 使用索引而不是全表扫描来提高查询速度。 - 避免在WHERE子句中使用复杂的表达式,这可能使得Oracle无法使用索引。 - 对于...

    Oracle数据库游标使用.rar

    例如,可以使用`BULK COLLECT INTO`将游标的结果集直接填充到集合变量中。 游标的使用场景包括但不限于: - 循环处理数据,如逐行更新或删除记录。 - 当需要根据当前行的数据决定下一行的处理方式时。 - 在PL/SQL...

    Oracle 游标

    Oracle游标是数据库管理系统中一个重要的概念,它在处理大量数据时起到了关键作用。游标允许用户在结果集上进行迭代操作,一次处理一行数据,而不是一次性加载所有数据。这在处理复杂查询、循环处理结果或者需要逐行...

    Oracle 游标的使用

    在Oracle 9i及其以后的版本中,还增加了使用BULK COLLECT子句批量绑定数据和使用CURSOR表达式实现嵌套游标的功能。本章将主要介绍如何使用显式游标进行多行数据的查询、游标FOR循环以及游标变量的使用,另外还将介绍...

    bulk collect学习

    在 Oracle 数据库中,Bulk Collect 是一个非常重要的特性,它主要用在 PL/SQL 代码中,用于提高数据处理的效率。Bulk Collect 允许一次性地将查询结果集批量加载到一个集合(collections)中,而不是传统的逐行处理...

    Oracle游标的使用实例详解

    Oracle游标是数据库管理系统中的一种重要机制,它允许应用程序按需逐行处理查询结果集,而不是一次性处理所有数据。游标对于交互式和事务性的应用尤其有用,因为它们可以控制数据流并根据需要进行交互。 首先,让...

    oracle循环游标

    最后,代码中还涉及到了游标的高级用法,包括使用`%type`和`%rowtype`属性以及`BULK COLLECT`集合操作。`%type`属性用于声明与数据库列相同类型的变量,而`%rowtype`则用于声明与表或视图行相同的复合类型。`BULK ...

    Oracle 遍历游标的四种方式汇总(for、fetch、while、BULK COLLECT)

    在Oracle数据库中,遍历游标是处理查询结果集的一种常见方法,特别是在编写存储过程或PL/SQL块时。游标允许我们逐行处理查询结果,而不会一次性加载所有数据,这对于大型数据集来说非常高效。以下是Oracle遍历游标的...

    oracle下巧用bulk collect实现cursor批量fetch的sql语句

    在Oracle数据库中,Bulk Collect是一个非常实用的特性,它允许我们一次从游标(Cursor)中批量地获取多行数据,极大地提高了处理大量数据时的性能。本文将深入讲解如何在PL/SQL中使用Bulk Collect实现Cursor的批量...

    sal,ename BULK COLLECT INTO

    2. **优化方法**:通过`BULK COLLECT INTO` 一次性将游标的结果集加载到集合中,然后遍历这个集合进行处理。 #### 五、性能考虑 当涉及到大量数据时,使用`BULK COLLECT INTO` 可以显著提高程序执行速度。这是因为...

    Oracle查询优化改写-技巧与案例

    书中的改写技巧可能涉及到如何将游标改写为集合操作,或者使用 bulk collect 和 for all 语句提高效率。 8. **存储过程和函数优化**:优化存储过程和函数,包括减少调用次数,使用绑定变量,以及避免在过程中进行大...

    Oracle显示游标的使用及游标for循环

    3. **游标FOR循环**:这是Oracle提供的一种简化显式游标使用的语法,它可以自动处理OPEN, FETCH和CLOSE操作。以下示例展示了如何使用游标FOR循环给所有部门经理减薪1000: ```sql DECLARE CURSOR emp_cur IS ...

    Oracle BULK COLLECT批量取数据解决方法

    Oracle BULK COLLECT 是一种在PL/SQL中用于优化数据处理的方法,特别是在处理大量数据时。这个特性允许一次性从数据库中获取多个记录,而不是传统的单行迭代方式,从而显著提高性能。在给定的示例代码中,展示了如何...

    Oracle内置SQL函数-分类整理大全

    游标允许程序逐行处理查询结果,而集合函数如BULK COLLECT和INTO关键字则用于批量操作。这在处理大量数据时非常有效。 十、递归查询和连接函数 CONNECT_BY_ROOT和START WITH…CONNECT BY结构用于递归查询,找出数据...

    oracle-cursor.rar_oracle

    Oracle游标是数据库管理系统中一个重要的概念,它在处理复杂SQL操作时扮演着核心角色。游标允许我们按行处理查询结果集,而非一次性加载所有数据。这在处理大量数据或者进行迭代处理时非常有用,因为可以有效地管理...

    第15章 游标的创建与使用.ppt

    3. 批量读取:为了提高效率,可以使用BULK COLLECT INTO语句批量获取多条数据,然后一次性存储到变量或集合中。 总之,游标是数据库编程中的重要工具,尤其在需要逐行处理数据时,游标提供了强大的控制力和灵活性,...

    浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化做出的贡献

    同样,我们也可以在打开游标后,使用BULK COLLECT一次性获取多行记录。如下所示: ```sql DECLARE TYPE deptrectab IS TABLE OF departments%ROWTYPE; dept_recs deptrectab; CURSOR cur IS SELECT department...

Global site tag (gtag.js) - Google Analytics