`
king_tt
  • 浏览: 2101977 次
  • 性别: 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过程已成功完成。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics