oracle的pl开发,ORACLE PL/SQL开发

刚刚在inthirties老大的博客里看到这篇文章,写的不错,正好自己最近在学习PL/SQL,转过来学习学习。

==================================================================================

bulk collect是可以看做是一种批获取的方式,在我们的plsql的代码段里经常作为into的扩展来使用。对于select id into v from .... 是一个常用的用法。不过这里只能是返回单条记录的时候,才能使用,如果是有多条记录我们就不能用这样的方式,而是使用fetch和循环的方式,不仅使用麻烦,而且性能也底下,这时我们的bulk collect隆重登场了,解决我们的问题。

通过bulk collect可以把我们的查询结果一次性地加载到我们的嵌入表中。这样我们不需要很麻烦的用游标的循环一条一条的去fetch叻,可想而知,这样不仅操作方便,也可以获得相当不错的程序性能。 我们可以在select into, fetch into, returning into的句子中使用。下面我们通过对以上各个例子来进行演示来看看他们的用法

先来看看我们的测试表和数据

SQL> desc test;

Name Null? Type

----------------------------------------- -------- ----------------------------

ZC_CODE VARCHAR2(20)

MONEY NUMBER(35)

MONEY_2 NUMBER(35)

SQL> col zc_code format a20;

SQL> col money format 999999.99;

SQL> col money_2 format 9999.99;

SQL>select * from test;

ZC_CODE MONEY MONEY_2

-------------------- ---------- --------

201 18600.00

20101 9600.00

2010101 3300.00

2010102 3200.00

2010103 3100.00

20102 9000.00

2010201 2000.00

2010202 7000.00

8 rows selected.

定义我们的嵌套表的类型, 定义在一个package里,这个package使我们的数据类型集合

SQL> create or replace package ALL_DATA_TYPE is

2 type T_TESTROW is table of test1.test%rowtype index by binary_integer;

3 type T_TESTZCCODE is table of test1.test.zc_code%type index by binary_integer;

4 end;

5 /

先来个select into的例子

SQL> create or replace function test_bulkcollect return ALL_DATA_TYPE.T_TESTROW is

2 v_rtn ALL_DATA_TYPE.T_TESTROW;

3 begin

4 select * bulk collect into v_rtn from test;

5 return v_rtn;

6 end;

7 /

统一的测试方法, 我们分别用这个测试代码来演示以上select into,fetch in

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值