Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Ambil dan kumpulkan massal dari KURSOR REF yang dikembalikan oleh suatu prosedur

Tidak diperbolehkan menggunakan variabel kursor di for kursor loop (FOR i IN myCursor ). Anda harus mengambil dari variabel kursor secara eksplisit satu baris pada satu waktu, menggunakan FETCH INTO pernyataan dan pernyataan loop reguler misalnya atau gunakan FETCH BULK COLLECT INTO untuk mengisi koleksi. Misalnya:

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. Koleksi PL/SQL:Tabel Bersarang di Database Oracle

  2. POWER() Fungsi di Oracle

  3. Bagaimana layanan yang berbeda di Oracle SOA berhubungan satu sama lain?

  4. FROM kata kunci tidak ditemukan di tempat yang diharapkan

  5. cx_Oracle:Menggunakan tipe PL/SQL RECORD sebagai argumen untuk prosedur tersimpan