【问题标题】:Count the number of records in a oracle cursor [closed]计算oracle游标中的记录数[关闭]
【发布时间】:2017-05-04 23:25:56
【问题描述】:

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

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

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

我需要循环这个输出游标并计算记录的数量。我已经测试了很多示例,但是任何示例都有效。

谢谢,

【问题讨论】:

  • 请显示一些相关代码。 “select count(*)...”有什么问题?
  • 要统计游标的记录数,需要从该游标中读取(获取)所有记录。光标就像java中的一个文件(流)——你必须阅读整个文件才能知道这个文件的行数。

标签: oracle cursor package procedure


【解决方案1】:

如果不对其进行迭代,就无法获得游标的计数。光标就像指向数据而不是数据本身的指针。所以如果你需要计算你必须循环直到cursor%notfound。有类似cursor%ROWCOUNTdocumentation 说:

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

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

【讨论】:

    猜你喜欢
    • 2015-01-31
    • 2011-07-04
    • 2011-01-18
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多