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