Oracle
 sql >> Database >  >> RDS >> Oracle

PL/SQL:convertire il cursore esplicito in cursore di riferimento?

Come accennato nel mio commento, l'apertura di un sys_refcursor per un altro cursore non è consentita fino a Oracle 11g. Dato che stai cercando di fare qualcosa che richiede l'uso di sys_refcursor, una volta il modo potrebbe essere come di seguito:

Crea un tipo

CREATE TYPE va IS TABLE OF NUMBER;
/

Blocca:

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;
/

Vedresti qui che alla fine sto usando di nuovo un SELECT istruzione per ref_cursor . È come se non volessi usare il solito modo, ho usato un modo alternativo.