计算oracle游标中的记录数

Jul*_*ite 0 oracle procedure cursor package

我需要知道oracle游标的记录数(过程的输出参数).

游标在Oracle Package的主体上声明,是一个类型IS REF CURSOR;

在程序2(相同的包)中,我调用过程1并获取输出光标.

我需要循环此输出光标并计算记录数量.我已经测试了很多例子,但是,任何例子都有效.

谢谢,

Kac*_*per 5

如果不迭代它就不可能获得光标数.游标就像指向数据的指针而不是数据本身.因此,如果你需要计算,你必须循环直到cursor%notfound.有类似cursor%ROWCOUNT文档说:

可以附加到游标或游标变量名称的游标属性.打开游标时,%ROWCOUNT归零.在第一次获取之前,cursor_name%ROWCOUNT返回0.此后,它返回到目前为止提取的行数.如果最新的提取返回一行,则该数字会递增.

因此,获取计数的唯一方法是执行select count(*) from --the same condition as in cursor或循环游标(获取所有数据),然后检查%rowcount或仅增加每个游标记录的变量,但是最快的方法是从游标批量获取所有记录并使用%rowcount.