Oracle 游标处理II - 使用BULK COLLECT

以前写了一个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 过程已成功完成。

你可能感兴趣的:(Oracle 游标处理II - 使用BULK COLLECT)