【问题标题】:How to get the numbers of rows from a pl/sql cursor without opening it?如何在不打开 pl/sql 游标的情况下获取行数?
【发布时间】:2015-02-25 20:24:49
【问题描述】:

想象一下声明一个 pl/sql 游标。通常你会打开它,获取记录,最后 ROWCOUNT 会告诉你检索到的记录数。但是有没有办法只有在声明游标时才能获得这个数量的记录?还是我总是必须通过所有记录才能达到我的目标?

我问是因为我需要这样的东西:遍历游标并获取一条又一条记录,但从一开始我就必须知道它将完整检索多少记录。这应该回答如下问题:现在我正在处理 5 条记录中的第 1 条记录。我已经通过使用 SELECT COUNT(*) INTO 解决了这个问题(使用相同的 SELECT 子句构建游标)并且它可以工作但是没有更好的方法吗?任何帮助将不胜感激:)

【问题讨论】:

  • 想象一下你有一个装有弹珠的不透明袋子。您想从袋子中取出所有或红色弹珠,但在取出之前您想知道有多少红色弹珠。你将如何解决这个问题?当你能做到这一点时,你就可以解决在获取结果之前知道游标将返回多少行的问题。

标签: plsql count cursor


【解决方案1】:

这不是您正在寻找的东西,但这可能会奏效:

SELECT column1, column2, ..., columnN, 
       rownum current_row, 
       count(1) over () total 
FROM table
WHERE ....;

这样,当您浏览光标时,您将始终知道您正在使用的记录数和记录总数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多