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