获取 oracle 存储过程执行失去的 数据集
获取 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;