有两种方法:
一个是声明一个系统游标,一个是声明一个自定义游标,然后下面是相同的,参数类型是
进出
(1)声明个人系统游标。(推荐)
复制代码代码如下所示:
创建或替换p_temp_procedure
(
cur_arg出sys_refcursor;方法1
)
开始
打开cur_arg为SELECT * FROM tablename;
终点

呼叫
复制代码代码如下所示:
声明
cur_calling sys_refcursor;
开始
p_temp_procedure(cur_calling);-所以这光标是值得的
在cur_calling环rec_next
的…
结束循环;
结束;

(2)在包头声明一个旅行表类型,然后调用这个类型的游标变量,存储过程返回游标,存储过程输出结果,这个方法非常麻烦。不象游标类型索引表,使用创建或替换类型来创建,所以只在包中的语句中,并且需要使用来执行存储过程,只识别游标类型。(不推荐,但建议这样做和知道,毕竟它是存在的原因)
复制代码代码如下所示:
-全局变量的定义
创建包pkg_package
作为
type_cursor是REFCURSOR类型;
type_record是记录类型
(
test01 VARCHAR2(32),
test02 VARCHAR2(32),
test03 VARCHAR2(32)
);
结束;

-创建返回光标的存储过程
复制代码代码如下所示:
创建或替换程序p_temp_procedure
(
cur_out_arg出pkg_package.type_cursor
)
是
开始
打开cur_out_arg为SELECT * FROM试验;
结束;

呼叫
复制代码代码如下所示:
声明
cur_out_arg pkg_package.type_cursor;
rec_arg pkg_package.type_record;
开始
p_temp_procedure(cur_out_arg);
取cur_out_arg为rec_arg;
dbms_output.put_line(rec_arg。test01);
Dbms_output.put_line (rec_arg.test02);
dbms_output.put_line(rec_arg。test03);
结束;