Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

PL/SQL:converter cursor explícito para cursor de referência?


Conforme mencionado no meu comentário, abrir um sys_refcursor para outro cursor não é permitido até o Oracle 11g. Como você está tentando fazer algo que exige o uso de sys_refcursor, uma vez que a maneira pode ser como abaixo:

Criar um tipo
CREATE TYPE va IS TABLE OF NUMBER;
/

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

Você veria aqui que no final estou usando novamente um SELECT instrução para ref_cursor . É como se você não quiser usar a maneira usual, eu usei uma maneira alternativa.