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

GIỚI HẠN THU SỐ LƯỢNG LỚN đang THỰC HIỆN NGAY LẬP TỨC

Có vẻ như cú pháp THỰC HIỆN NGAY LẬP TỨC không cho phép LIMIT trong mệnh đề thu thập hàng loạt

http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/executeim Instant_statement.htm#CJACGJJG


số lượng lớn_collect_into_clause
http://docs.oracle .com / cd / E11882_01 / appdev.112 / e25519 / returninto_clause.htm # CJAIAGHJ

Bạn có thể sử dụng con trỏ và lệnh FETCH .. LIMIT cùng với lệnh OPEN..FOR,
theo cách này:

DECLARE
  ....
  cur sys_refcursor;
BEGIN
  v_query := 'SELECT level AS x FROM dual CONNECT BY LEVEL <=10';
  OPEN cur FOR v_query;
  LOOP
     FETCH cur BULK COLLECT INTO collection LIMIT 3;
     EXIT WHEN collection.COUNT = 0;

     /* Process data from `collection` */

  END LOOP;
  CLOSE cur;
END;

Ví dụ:

DECLARE
  TYPE col_typ IS table of NUMBER;
  collection col_typ;
  v_query varchar2(3000); 
  cur sys_refcursor;
  i int := 0;
  x int;
BEGIN
  v_query := 'SELECT level AS x FROM dual CONNECT BY LEVEL <=10';

  OPEN cur FOR v_query;
  LOOP
     FETCH cur BULK COLLECT INTO collection LIMIT 3;
     EXIT WHEN collection.COUNT = 0;

     /* Process data from `collection` */
     i := i + 1;
     DBMS_OUTPUT.PUT_LINE('==== Batch nbr #' || i );
     FOR x IN 1 .. collection.COUNT LOOP
       DBMS_OUTPUT.PUT_LINE( collection( x ) );
     END LOOP;
  END LOOP;
  CLOSE cur;
END;
/

Kết quả:

==== Batch nbr #1
1
2
3
==== Batch nbr #2
4
5
6
==== Batch nbr #3
7
8
9
==== Batch nbr #4
10


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một tài liệu tham khảo tốt cho Oracle PL / SQL

  2. Làm cách nào để khắc phục truy vấn con một hàng Ora-01427 trả về nhiều hơn một hàng trong vùng chọn?

  3. Làm cách nào để lấy thông tin theo dõi cho các biến ràng buộc được chuyển qua OracleParameter trong ODP.NET?

  4. Bảng tạm thời trong Oracle?

  5. Cách tách một chuỗi được phân tách bằng dấu phẩy trong Oracle