在循环中我调用参数化游标。在任何特定步骤中,如果光标返回行,则此循环结束,我必须将光标作为引用光标返回。如何在不执行相同查询两次的情况下检查rowcount?
procedure pr_test
(
v_data varray;
,ret_data sys_refcursor
)
as
cursor c_q(x)
select * from table
where col1 = x;
...
begin
...
for in 1..v_data.count loop
open ret_data for c_q(v_data(i));
----- here some logic is required --------
/*if rowcount of re_data > 0 then
return ret_data;
else
close ret_data;
end if;*/
end loop;
end;
答案 0 :(得分:0)
如何实现这一目标是没有办法的。游标充当生产者 - 消费者设计模式。这意味着在完全获取光标之前,没有人能够知道将重新调整多少行。
在OCI中你可以使用可重绕的游标 - 这些游标可以回退到开头,但据我所知,这些游标无法从PL / SQL访问。