在之前项目中遇到要使用存储过程中返回结果集的时候,我的做法是创建一个查询包,并在包里定义一个结果集类型,然后在这个包里写上查询的存储过程.往往是每一个查询包里都定义一次结果集类型.如下:
create or replace package pkg_query1 is
type c_resultset_type is ref cursor;
procedure proc_query_1
(
o_resultset out c_resultset_type;
......
);
end pkg_query1;
create or replace package pkg_query2 is
type c_resultset_type is ref cursor;
procedure proc_query_2
(
o_resultset out c_resultset_type;
......
);
end pkg_query1;
这样重复定义类型,并不是必须的,可以用下边的办法替代:
create or replace package pkg_common is
type c_resultset_type is ref cursor;
end pkg_common ;
create or replace proc_query_1
(
o_resultset out c_resultset_type
)
is
......
begin
......
end;
create or replace proc_query_2
(
o_resultset out c_resultset_type;
)
is
......
begin
......
end;