Jak je uvedeno v mém komentáři, otevření sys_refcursor pro jiný kurzor není povoleno až do Oracle 11g. Když se pokoušíte udělat něco, co vyžaduje použití sys_refcursor, jeden způsob by mohl být jako níže:
Vytvořte typ
CREATE TYPE va IS TABLE OF NUMBER;
/
Blokovat:
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;
/
Zde byste viděli, že na konci znovu používám SELECT
příkaz pro ref_cursor
. Je to jako když nechcete použít obvyklý způsob, použil jsem alternativní způsob.