在打开引用游标以供应用程序读取后,有没有办法执行任何处理?
所以,我有一个引用游标:OPEN p_data FOR v_select。该应用程序从中读取。之后,我的程序可以继续处理吗?还是完成了?
请告知
答案 0 :(得分:0)
光标打开后,您可以FETCH
从它开始直到您到达,直到无法检索到更多数据。此时或更早,如果您已尽快处理数据,可以CLOSE
光标。
declare
p_data sys_refcursor;
v_select varchar2(1000) := 'select * from dual';
type data_rec is record (dummy dual.dummy%type);
type data_tab is table of data_rec;
l_data data_tab;
begin
OPEN p_data FOR v_select;
LOOP
FETCH p_data BULK COLLECT INTO l_data LIMIT 100;
FOR r in 1 .. l_data.count LOOP
dbms_output.put_line(l_data(r).dummy);
END LOOP;
EXIT WHEN p_data%notfound;
END LOOP;
CLOSE p_data;
end;