计算oracle游标中的记录数

时间:2016-12-19 20:35:15

标签: oracle cursor package procedure

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

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

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

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

谢谢,

1 个答案:

答案 0 :(得分:5)

如果不迭代光标,就无法计算光标数。游标就像指向数据的指针而不是数据本身。因此,如果你需要计算,你必须循环直到cursor%notfound。有类似cursor%ROWCOUNTdocumentation的内容:

  

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

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