获取 oracle 存储过程执行得到的 数据集

PL/SQL的存储过程和函数均不直接提供返回数据集的方法,但可以通过返回类型对象来实现返回数据集的效果。具体思路为:

(1)创建包头,在其中声明类型和存储过程,类型应该引用游标;

(2)创建包体,定义存储过程,执行查询,将查询得到的结果集以游标句柄的形式返回。

说明:游标分为显示游标和隐式游标,任何查询结果默认都提供隐式游标,当前方案的重点在于使用游标取得查询结果的句柄,由于游标被引用为类型,通过返回类型,即等效于(并不等同)返回数据集。

 

    具体的案例如下:

--创建包头

create or replace package mypackage1

as

  --声明类型,并引用游标

  type cursorType is ref cursor;

  --声明存储过程,两个输入参数,一个输出参数,输出游标类型数据

  procedure prcGetGlobalAddress

  (

    pos1 integer,                      --分页查询的下限

    pos2  integer,                     --分页查询的上限

    cur in out mypackage1.cursorType     --输出参数,数据类型为引用游标的类型

  );

end mypackage1;

 

--创建包体

create or replace package body mypackage1                  

as  

    --定义存储过程

  procedure prcGetGlobalAddress

  (

    pos1 integer,

    pos2  integer,

    cur in out mypackage1.cursorType

  )

  as

  begin

    --返回得到分页查询结果集的游标句柄

    open cur for 

      select * 

      from (  select a.*,rownum rn 

              from (  select * 

                      from tblsys_globaladdress) a 

              where rownum<=pos2) 

      where rn > =pos1;

  end prcGetGlobalAddress;

  

end mypackage1;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值