Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PL/SQL:Expliziten Cursor in Ref-Cursor umwandeln?

Wie in meinem Kommentar erwähnt, ist das Öffnen eines sys_refcursor für einen anderen Cursor bis Oracle 11g nicht erlaubt. Wenn Sie versuchen, etwas zu tun, das die Verwendung von sys_refcursor erfordert, könnte ein Weg wie folgt aussehen:

Erstellen Sie einen Typ

CREATE TYPE va IS TABLE OF NUMBER;
/

Sperren:

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

Sie würden hier sehen, dass ich am Ende wieder ein SELECT verwende Anweisung für ref_cursor . Es ist, als ob Sie nicht den üblichen Weg verwenden möchten, ich habe einen alternativen Weg gewählt.