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

Kumpulkan Massal Ke dan Jalankan Segera di Oracle

Ya, secara teknis Anda dapat:

  1  SQL> declare
  2   type x is table of t.id%type index by pls_integer;
  3   xx x;
  4  begin
  5   execute immediate
  6   'select id from t' bulk collect into xx;
  7   dbms_output.put_line(xx.count);
  8  end;
  9  /
426 

Dan Oracle dengan jelas menyatakan ini dalam dokumentasi:

http://docs.Oracle.com/cd/B19306_01/appdev.102/b14261/executeimmediate_statement.htm

Tetapi Anda dapat menggunakan acara cara yang lebih berguna jika Anda benar-benar PERLU menjalankan SQL Dinamis - kursor ref lemah. Anda akan memiliki akses ke opsi canggih seperti LIMIT dan akan dapat menggunakan koleksi catatan.

SQL> declare
  2   type x is table of t%rowtype index by pls_integer;
  3   xx x;
  4   c sys_refcursor;
  5  begin
  6    open c for 'select * from t';
  7    loop
  8      fetch c bulk collect into xx limit 100;
  9      dbms_output.put_line(xx.count);
 10      exit when c%notfound;
 11    end loop;
 12    close c;
 13  end;
 14  /
100                                                                             
100                                                                             
100                                                                             
100                                                                             
26   


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi JSON_QUERY() di Oracle

  2. Di Oracle, apakah mungkin untuk INSERT atau UPDATE catatan melalui tampilan?

  3. Memutar tabel secara dinamis Oracle

  4. Apa sebenarnya BLOB dalam konteks DBMS?

  5. Bagaimana cara meneruskan nilai ke operator IN secara dinamis?