sql >> Databáze >  >> RDS >> Oracle

PL/SQL:převést explicitní kurzor na referenční kurzor?

Jak je uvedeno v mém komentáři, otevření sys_refcursor pro jiný kurzor není povoleno až do Oracle 11g. Když se pokoušíte udělat něco, co vyžaduje použití sys_refcursor, jeden způsob by mohl být jako níže:

Vytvořte typ

CREATE TYPE va IS TABLE OF NUMBER;
/

Blokovat:

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

Zde byste viděli, že na konci znovu používám SELECT příkaz pro ref_cursor . Je to jako když nechcete použít obvyklý způsob, použil jsem alternativní způsob.




  1. Připojení k mySQL přes C++

  2. Skrytí hesla ve formátu prostého textu pomocí příkazového řádku sqlplus

  3. Nainstalujte modul mysql pro python s pip

  4. Mysql Jak vybrat pouze ze sloupce, pokud sloupec existuje