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

Lặp lại trên một cột trong PL / SQL

Cách đơn giản nhất để lặp lại các hàng trong bảng trong PL / SQL là làm một cái gì đó như

BEGIN
  FOR employees IN (SELECT emp_id FROM emp)
  LOOP
    dbms_output.put_line( employees.emp_id );
  END LOOP;
END;

Ngoài ra, bạn có thể tìm nạp tất cả các giá trị EID vào một bộ sưu tập PL / SQL và lặp lại bộ sưu tập, như trong ví dụ này

DECLARE
  TYPE emp_id_tbl IS TABLE OF emp.emp_id%type;
  l_emp_ids emp_id_tbl ;
BEGIN
  SELECT emp_id
    BULK COLLECT INTO l_emp_ids 
    FROM emp;

  FOR i IN l_emp_ids .FIRST .. l_empnos.LAST
  LOOP
    dbms_output.put_line( l_emp_ids (i) );
  END LOOP;
END;

Tuy nhiên, nếu truy vấn của bạn có thể trả về hàng nghìn hàng, việc tìm nạp tất cả dữ liệu vào bộ sưu tập có thể sử dụng nhiều bộ nhớ PGA hơn bạn muốn và bạn có thể cần tìm nạp các hàng theo khối bằng mệnh đề LIMIT. Nhưng điều đó dường như đang vượt lên chính chúng ta vào thời điểm này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn tab chéo Oracle SQL

  2. Toán tử tham gia Oracle

  3. Tại sao tôi nhận được #### trong cột NUMBER sau định dạng?

  4. Kết nối với Oracle bằng Oracle.ManagedDataAccess

  5. Ràng buộc duy nhất có điều kiện với nhiều trường trong oracle db