<span style="font-size:18px;">CREATE OR REPLACE PROCEDURE simpleProc
(
outpara OUT VARCHAR2
)
AS
BEGIN
outpara:='简单过程';
return;
END;</span>
定义返回结果集的存储过程,不能够定义成如下方式:
<span style="font-size:18px;">procedure testQuery
(
return_rs out CURSOR <span style="color:#ff0000;">--CURSOR只是一个关键字,但并不是一种类型,所以在存储过程中这样写会报"CURSOR类型打不到"的错误</span>
)
as
begin
--......
end;</span>
我们需要将过程定义到包中,在包里面先定义游标引用,然后才能够在过程的输出参数中引用该类型,如下:
<span style="font-size:18px;">CREATE OR REPLACE PACKAGE TestQueryPkg
IS
--定义游标引用,后面就可以在输出参数中定义为该类型输出
TYPE cur_rs IS ref CURSOR;
PROCEDURE testQuery(return_rs OUT cur_rs);
END;
--实现包中存储过程
CREATE OR REPLACE PACKAGE BODY TestQueryPkg
IS
procedure testQuery(return_rs out cur_rs)
as
begin
open return_rs for
select username from pcmc_user;
return;
end;
END;</span>