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

Pobierz i odbierz zbiorczo z REF CURSOR zwróconego w ramach procedury

Nie wolno używać zmiennych kursora w for pętla kursora (FOR i IN myCursor ). Musisz pobrać ze zmiennej kursora jawnie jeden wiersz na raz, używając FETCH INTO na przykład instrukcję i instrukcję pętli zwykłej lub użyj FETCH BULK COLLECT INTO aby wypełnić kolekcję. Na przykład:

SQL> declare
  2    TYPE t_clientID_nt IS TABLE OF dual%rowtype;
  3    clientID_nt t_clientID_nt;
  4  
  5    l_cur sys_refcursor;
  6  
  7    procedure OpenAndPopulateCursor(p_cur in out sys_refcursor) is
  8    begin
  9      open p_cur for
 10        select *
 11         from dual;
 12    end;
 13  
 14  begin
 15    OpenAndPopulateCursor(l_cur);
 16  
 17    if l_cur%isopen
 18    then
 19      fetch l_cur bulk collect into clientID_nt;
 20    end if;
 21  
 22    dbms_output.put_line(concat( to_char(clientID_nt.count) 
 23                               , ' record(s) has/have been fetched.'));
 24  end;
 25  /

 1 record(s) has/have been fetched.

 PL/SQL procedure successfully completed



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle wstawia, jeśli wiersz nie istnieje

  2. Oracle SQL, jak napisać instrukcję sql, która weryfikuje, czy użytkownik w mojej sieci (np. znajomi lub znajomi znajomych)

  3. Jak usunąć domyślną wartość z kolumny w Oracle?

  4. Pobierz liczbę zaktualizowanych wierszy

  5. Autoinkrementacja w Oracle z sekwencją i wyzwalaczem - nieprawidłowa instrukcja sql