在PL / sql中返回ref cursor之前检查行数

时间:2014-02-10 11:15:46

标签: oracle plsql sys-refcursor

在循环中我调用参数化游标。在任何特定步骤中,如果光标返回行,则此循环结束,我必须将光标作为引用光标返回。如何在不执行相同查询两次的情况下检查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;

1 个答案:

答案 0 :(得分:0)

如何实现这一目标是没有办法的。游标充当生产者 - 消费者设计模式。这意味着在完全获取光标之前,没有人能够知道将重新调整多少行。

在OCI中你可以使用可重绕的游标 - 这些游标可以回退到开头,但据我所知,这些游标无法从PL / SQL访问。