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;