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

Tìm nạp và thu thập hàng loạt từ REF CURSOR được trả về bởi một thủ tục

Nó không được phép sử dụng các biến con trỏ trong for vòng lặp con trỏ (FOR i IN myCursor ). Bạn phải tìm nạp từ biến con trỏ một cách rõ ràng từng hàng một, bằng cách sử dụng FETCH INTO ví dụ câu lệnh và câu lệnh lặp thông thường hoặc sử dụng FETCH BULK COLLECT INTO để điền vào một bộ sưu tập. Ví dụ:

SQL> declare
  2    TYPE t_clientID_nt IS TABLE OF dual%rowtype;
  3    clientID_nt t_clientID_nt;
  4  
  5    l_cur sys_refcursor;
  6  
  7    procedure OpenAndPopulateCursor(p_cur in out sys_refcursor) is
  8    begin
  9      open p_cur for
 10        select *
 11         from dual;
 12    end;
 13  
 14  begin
 15    OpenAndPopulateCursor(l_cur);
 16  
 17    if l_cur%isopen
 18    then
 19      fetch l_cur bulk collect into clientID_nt;
 20    end if;
 21  
 22    dbms_output.put_line(concat( to_char(clientID_nt.count) 
 23                               , ' record(s) has/have been fetched.'));
 24  end;
 25  /

 1 record(s) has/have been fetched.

 PL/SQL procedure successfully completed



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ghi nhật ký thông báo lỗi trong quy trình được lưu trữ của Oracle

  2. Dữ liệu lớn SQL của Oracle

  3. Xem xét từng lỗi từng nhóm của Oracle

  4. Oracle Chèn Lựa chọn với thứ tự của

  5. Gọi thủ tục được lưu trữ oracle với tham số đầu ra con trỏ từ tập lệnh python