当前位置: 首页 > 图灵资讯 > 技术篇> 获取 oracle 存储过程执行得到的 数据集

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

来源:图灵教育
时间:2023-06-04 09:09:22

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

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

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

注:游标分为显示游标和隐藏游标。默认情况下,任何查询结果都提供隐藏的游标。当前计划的重点是使用游标获得查询结果的句柄。由于游标被引用为类型,返回类型等于(不等同)返回数据集。

具体案例如下:

--创建包头createtet or replace package mypackage1as  --声明类型,并引用游标  type cursorType is ref cursor;  --声明存储过程,两个输入参数,一个输出参数,输出游标类型数据  procedure prcGetGlobalAddress  (    pos1 integer,                      --分页查询的下限    pos2  integer,                     --分页查询的上限    cur in out mypackage1.cursorType     --输出参数,引用游标的数据类型为数据类型  );end mypackage1; --创建包体createate 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;