Som nämnts i min kommentar är det inte tillåtet att öppna en sys_refcursor för en annan markör förrän Oracle 11g. När du försöker göra något som kräver användning av sys_refcursor, kan ett sätt vara som nedan:
Skapa en typ
CREATE TYPE va IS TABLE OF NUMBER;
/
Blockera:
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;
/
Du skulle se här att jag i slutet återigen använder en SELECT
sats för ref_cursor
. Det är precis som om du inte vill använda det vanliga sättet, jag använde ett alternativt sätt.