您的位置:首页 > 数据库 > Oracle

Oracle 游标处理II - 使用BULK COLLECT

2013-06-13 16:36 375 查看
以前写了一个Oracle 游标处理
http://hi.baidu.com/wangzhiqing999/blog/item/db33b52993b8e23a359bf774.html
是最原始的,一条一条处理的。如果数据量很大的话,采用这种一条一条的处理方式的话,效率会很低。

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

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

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

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

SQL> DECLARE

2 -- 定义类型.

3 TYPE test_type IS TABLE OFtest_main%ROWTYPE;

4 test_data test_type;

5 -- 定义游标.

6 CURSOR c_test_main IS

7 SELECT id, value FROMtest_main;

8 BEGIN

9 -- 打开游标.

10 OPEN c_test_main;

11 --开始循环

12 LOOP

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

14 FETCH c_test_main

15 BULKCOLLECTINTO test_data LIMIT 2;

16

17 -- 调试输出.

18 FOR i IN 1..test_data.count

19 LOOP

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

21 END LOOP;

22

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

24 EXIT WHEN c_test_main%NOTFOUND;

25

26 END LOOP;

27 --关闭游标.

28 CLOSE c_test_main;

29 END;

30 /

ONE

TWO

THREE

PL/SQL 过程已成功完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: