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

Cara memasukkan data secara massal dari kursor ref ke tabel sementara di PL/SQL

anda dapat menggunakan operasi BULK pada REF CURSOR:

SQL> CREATE GLOBAL TEMPORARY TABLE gt (ID NUMBER);

Table crÚÚe.

SQL> DECLARE
  2     l_refcursor SYS_REFCURSOR;
  3     TYPE tab_number IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  4     l_data tab_number;
  5  BEGIN
  6     OPEN l_refcursor FOR
  7        SELECT ROWNUM FROM dual CONNECT BY LEVEL <= 1e6;
  8     LOOP
  9        FETCH l_refcursor BULK COLLECT
 10           INTO l_data LIMIT 100;
 11
 12        FORALL i IN 1..l_data.count
 13           INSERT INTO gt VALUES (l_data(i));
 14
 15        EXIT WHEN l_refcursor%NOTFOUND;
 16
 17     END LOOP;
 18     CLOSE l_refcursor;
 19  END;
 20  /

ProcÚdure PL/SQL terminÚe avec succÞs.

Oracle 10g sudah mengimplementasikan pengoptimalan ini untuk loop reguler, jadi Anda mungkin tidak melihat banyak peningkatan dari LOOP...INSERT sederhana.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jalankan Oracle Client dalam mode 32-bit pada mesin 64-bit

  2. Ketika saya memanggil PreparedStatement.cancel() dalam aplikasi JDBC, apakah itu benar-benar mematikannya di database Oracle?

  3. ORA-00102:mengambil di luar urutan

  4. NHibernate 3.2 dan Paging Oracle

  5. Temukan rata-rata id dalam sebulan