sql >> Databasteknik >  >> RDS >> Oracle

PL/SQL:konvertera explicit markör till ref markör?

Som nämnts i min kommentar är det inte tillåtet att öppna en sys_refcursor för en annan markör förrän Oracle 11g. När du försöker göra något som kräver användning av sys_refcursor, kan ett sätt vara som nedan:

Skapa en typ

CREATE TYPE va IS TABLE OF NUMBER;
/

Blockera:

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

Du skulle se här att jag i slutet återigen använder en SELECT sats för ref_cursor . Det är precis som om du inte vill använda det vanliga sättet, jag använde ett alternativt sätt.




  1. Kör sql-satsen via JDBC med CLOB-bindning

  2. hur beräknar man resterande tid med php och mysql?

  3. Använda index, använda temporärt, använda filesort - hur fixar man detta?

  4. DELETE VS DROP i SQL