Jak wspomniałem w moim komentarzu, otwarcie sys_refcursor dla innego kursora nie jest dozwolone do czasu Oracle 11g. Ponieważ próbujesz zrobić coś, co wymaga użycia sys_refcursor, jeden sposób może wyglądać tak:
Utwórz typ
CREATE TYPE va IS TABLE OF NUMBER;
/
Blokuj:
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;
/
Zobaczysz tutaj, że na końcu ponownie używam SELECT
oświadczenie dla ref_cursor
. To tak, jakbyś nie chciał używać zwykłego sposobu, ja użyłem alternatywnego.