Oracle
 sql >> Baza danych >  >> RDS >> Oracle

PL/SQL:przekonwertować jawny kursor na kursor referencyjny?

Jak wspomniałem w moim komentarzu, otwarcie sys_refcursor dla innego kursora nie jest dozwolone do czasu Oracle 11g. Ponieważ próbujesz zrobić coś, co wymaga użycia sys_refcursor, jeden sposób może wyglądać tak:

Utwórz typ

CREATE TYPE va IS TABLE OF NUMBER;
/

Blokuj:

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

Zobaczysz tutaj, że na końcu ponownie używam SELECT oświadczenie dla ref_cursor . To tak, jakbyś nie chciał używać zwykłego sposobu, ja użyłem alternatywnego.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdź, czy plik istnieje?

  2. Dynamicznie wyszukuj nazwy kolumn dla tabeli w zapytaniu sql

  3. Baza danych Oracle 12c Błąd podczas próby połączenia:Karta sieciowa nie może nawiązać połączenia

  4. Brak dostawcy Oracle dla Oledb w powłoce VS 2015

  5. Ograniczenie unikatowe Oracle SQL A do B, B do A