我可以将显式光标转换为ref光标吗?我在想:
declare
cursor c is
select x from tab;
rc sys_refcursor;
begin
open c;
rc:=c;
close c;
end;
/
我想将Ref Coursor用作过程的输入参数。
我知道我总是可以这样做:
OPEN rc FOR select x from tab;
,但是我正在重构一些旧代码,我想只是为了清晰而保留显式光标的定义。
如我的评论中所述,在Oracle 11g之前,不允许为另一个光标打开一个sys_refcursor。当您尝试做需要使用sys_refcursor的事情时,一旦可能如下:
创建类型
CREATE TYPE va IS TABLE OF NUMBER;
/
块:
DECLARE
CURSOR c
IS
SELECT employee_id FROM employee;
rc SYS_REFCURSOR;
var va;
BEGIN
OPEN c;
FETCH c BULK COLLECT INTO var;
CLOSE c;
OPEN rc FOR SELECT COLUMN_VALUE FROM TABLE (var);
END;
/
您会在这里看到最后一次使用ref_cursor
的SELECT
语句。就像您不想使用常规方式一样,我使用另一种方式。