sql >> Database >  >> RDS >> Oracle

PL/SQL:expliciete cursor converteren naar ref-cursor?

Zoals vermeld in mijn commentaar, is het openen van een sys_refcursor voor een andere cursor niet toegestaan ​​tot Oracle 11g. Aangezien u iets probeert te doen waarvoor het gebruik van sys_refcursor vereist is, zou eens de volgende manier kunnen zijn:

Maak een type

CREATE TYPE va IS TABLE OF NUMBER;
/

Blokkeren:

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

Je zou hier zien dat ik uiteindelijk weer een SELECT . gebruik statement voor ref_cursor . Het is net alsof je de gebruikelijke manier niet wilt gebruiken, ik heb een alternatieve manier gebruikt.




  1. Hoe verwijder ik alle tabellen in psql (PostgreSQL interactieve terminal) die beginnen met een gewoon woord?

  2. Gematerialiseerde weergave - Oracle / gegevens worden niet bijgewerkt

  3. hoe deze fout te voorkomen :Waarschuwing:mysql_fetch_assoc() verwacht dat parameter 1 resource is, boolean gegeven in ... op regel 11

  4. Een afzonderlijke PHP-array in Javascript ontleden