Có, về mặt kỹ thuật, bạn có thể:
1 SQL> declare
2 type x is table of t.id%type index by pls_integer;
3 xx x;
4 begin
5 execute immediate
6 'select id from t' bulk collect into xx;
7 dbms_output.put_line(xx.count);
8 end;
9 /
426
Và Oracle nói rõ điều này trong tài liệu:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/executeim Instant_statement.htm
Nhưng bạn có thể sử dụng sự kiện cách hữu ích hơn nếu bạn thực sự CẦN thực thi SQL động - con trỏ tham chiếu yếu. Bạn sẽ có quyền truy cập vào tùy chọn mạnh mẽ như LIMIT và sẽ có thể sử dụng các bộ sưu tập hồ sơ.
SQL> declare
2 type x is table of t%rowtype index by pls_integer;
3 xx x;
4 c sys_refcursor;
5 begin
6 open c for 'select * from t';
7 loop
8 fetch c bulk collect into xx limit 100;
9 dbms_output.put_line(xx.count);
10 exit when c%notfound;
11 end loop;
12 close c;
13 end;
14 /
100
100
100
100
26