以前写了一个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 some_cursor into var1, var2 形式来获取游标数据,当游标中的记录数...
### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常...
### Oracle批量处理(Bulk Collect) #### 一、概述 在Oracle数据库中,`BULK COLLECT` 是一种高效的数据检索机制,它允许一次性从数据库中提取多行数据,并将其存储在一个PL/SQL集合中。与传统的游标逐行处理相比,...
考虑使用集合操作(如`BULK COLLECT`)一次性获取所有数据。 2. **优化游标查询**: - 使用索引而不是全表扫描来提高查询速度。 - 避免在WHERE子句中使用复杂的表达式,这可能使得Oracle无法使用索引。 - 对于...
例如,可以使用`BULK COLLECT INTO`将游标的结果集直接填充到集合变量中。 游标的使用场景包括但不限于: - 循环处理数据,如逐行更新或删除记录。 - 当需要根据当前行的数据决定下一行的处理方式时。 - 在PL/SQL...
Oracle游标是数据库管理系统中一个重要的概念,它在处理大量数据时起到了关键作用。游标允许用户在结果集上进行迭代操作,一次处理一行数据,而不是一次性加载所有数据。这在处理复杂查询、循环处理结果或者需要逐行...
在Oracle 9i及其以后的版本中,还增加了使用BULK COLLECT子句批量绑定数据和使用CURSOR表达式实现嵌套游标的功能。本章将主要介绍如何使用显式游标进行多行数据的查询、游标FOR循环以及游标变量的使用,另外还将介绍...
在 Oracle 数据库中,Bulk Collect 是一个非常重要的特性,它主要用在 PL/SQL 代码中,用于提高数据处理的效率。Bulk Collect 允许一次性地将查询结果集批量加载到一个集合(collections)中,而不是传统的逐行处理...
Oracle游标是数据库管理系统中的一种重要机制,它允许应用程序按需逐行处理查询结果集,而不是一次性处理所有数据。游标对于交互式和事务性的应用尤其有用,因为它们可以控制数据流并根据需要进行交互。 首先,让...
最后,代码中还涉及到了游标的高级用法,包括使用`%type`和`%rowtype`属性以及`BULK COLLECT`集合操作。`%type`属性用于声明与数据库列相同类型的变量,而`%rowtype`则用于声明与表或视图行相同的复合类型。`BULK ...
在Oracle数据库中,遍历游标是处理查询结果集的一种常见方法,特别是在编写存储过程或PL/SQL块时。游标允许我们逐行处理查询结果,而不会一次性加载所有数据,这对于大型数据集来说非常高效。以下是Oracle遍历游标的...
在Oracle数据库中,Bulk Collect是一个非常实用的特性,它允许我们一次从游标(Cursor)中批量地获取多行数据,极大地提高了处理大量数据时的性能。本文将深入讲解如何在PL/SQL中使用Bulk Collect实现Cursor的批量...
2. **优化方法**:通过`BULK COLLECT INTO` 一次性将游标的结果集加载到集合中,然后遍历这个集合进行处理。 #### 五、性能考虑 当涉及到大量数据时,使用`BULK COLLECT INTO` 可以显著提高程序执行速度。这是因为...
书中的改写技巧可能涉及到如何将游标改写为集合操作,或者使用 bulk collect 和 for all 语句提高效率。 8. **存储过程和函数优化**:优化存储过程和函数,包括减少调用次数,使用绑定变量,以及避免在过程中进行大...
3. **游标FOR循环**:这是Oracle提供的一种简化显式游标使用的语法,它可以自动处理OPEN, FETCH和CLOSE操作。以下示例展示了如何使用游标FOR循环给所有部门经理减薪1000: ```sql DECLARE CURSOR emp_cur IS ...
Oracle BULK COLLECT 是一种在PL/SQL中用于优化数据处理的方法,特别是在处理大量数据时。这个特性允许一次性从数据库中获取多个记录,而不是传统的单行迭代方式,从而显著提高性能。在给定的示例代码中,展示了如何...
游标允许程序逐行处理查询结果,而集合函数如BULK COLLECT和INTO关键字则用于批量操作。这在处理大量数据时非常有效。 十、递归查询和连接函数 CONNECT_BY_ROOT和START WITH…CONNECT BY结构用于递归查询,找出数据...
Oracle游标是数据库管理系统中一个重要的概念,它在处理复杂SQL操作时扮演着核心角色。游标允许我们按行处理查询结果集,而非一次性加载所有数据。这在处理大量数据或者进行迭代处理时非常有用,因为可以有效地管理...
3. 批量读取:为了提高效率,可以使用BULK COLLECT INTO语句批量获取多条数据,然后一次性存储到变量或集合中。 总之,游标是数据库编程中的重要工具,尤其在需要逐行处理数据时,游标提供了强大的控制力和灵活性,...
同样,我们也可以在打开游标后,使用BULK COLLECT一次性获取多行记录。如下所示: ```sql DECLARE TYPE deptrectab IS TABLE OF departments%ROWTYPE; dept_recs deptrectab; CURSOR cur IS SELECT department...