我需要知道oracle游标的记录数(过程的输出参数)。
游标在Oracle Package的主体上声明,并且是一个类型IS REF CURSOR;
在程序2(相同的包)中,我调用过程1并获取输出光标。
我需要循环此输出光标并计算记录数量。我已经测试了很多例子,但是,任何一个例子都可以。
谢谢,
答案 0 :(得分:5)
如果不迭代光标,就无法计算光标数。游标就像指向数据的指针而不是数据本身。因此,如果你需要计算,你必须循环直到cursor%notfound
。有类似cursor%ROWCOUNT
但documentation的内容:
可以附加到游标或游标变量名称的游标属性。打开游标时,%ROWCOUNT归零。在第一次获取之前,cursor_name%ROWCOUNT返回0.此后,它返回到目前为止提取的行数。如果最新的提取返回一行,则该数字会递增。
所以获取计数的唯一方法是执行select count(*) from --the same condition as in cursor
或循环游标(获取所有数据),然后检查%rowcount
或只为每个游标记录增加变量,但最快的方法可能是批量从光标获取所有记录并使用%rowcount
。