Oracle REF游标

时间:2018-05-22 16:23:35

标签: oracle cursor ref

在打开引用游标以供应用程序读取后,有没有办法执行任何处理?

所以,我有一个引用游标:OPEN p_data FOR v_select。该应用程序从中读取。之后,我的程序可以继续处理吗?还是完成了?

请告知

1 个答案:

答案 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;