sql >> Base de Datos >  >> RDS >> Oracle

PL/SQL:¿convertir cursor explícito en cursor de referencia?

Como mencioné en mi comentario, no se permite abrir un sys_refcursor para otro cursor hasta Oracle 11g. Como está tratando de hacer algo que exige el uso de sys_refcursor, una forma podría ser la siguiente:

Crear un tipo

CREATE TYPE va IS TABLE OF NUMBER;
/

Bloque:

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

Vería aquí que al final estoy usando de nuevo un SELECT declaración para ref_cursor . Es como si no quisieras usar la forma habitual, usé una forma alternativa.