Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách chèn hàng loạt dữ liệu từ con trỏ tham chiếu vào bảng tạm thời trong PL / SQL

bạn có thể sử dụng các hoạt động BULK trên 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.

Tuy nhiên, Oracle 10g đã thực hiện tối ưu hóa này cho vòng lặp thông thường, vì vậy bạn có thể không thấy nhiều cải thiện từ một LOOP ... INSERT đơn giản.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-02070:cơ sở dữ liệu không hỗ trợ trong ngữ cảnh này

  2. Cách lấy danh sách tất cả các thủ tục bên trong một gói oracle

  3. Hằng số trong truy vấn SQL của Oracle

  4. Cách xóa giá trị cụ thể khỏi chuỗi được phân tách bằng dấu phẩy trong oracle

  5. Nó chính xác là gì một BLOB trong ngữ cảnh DBMS