Plsql 如何在不打开pl/sql游标的情况下从中获取行数?
想象一下声明一个pl/sql游标。通常您会打开它,获取记录,最后ROWCOUNT会告诉您检索到的记录数。但是,有没有一种方法可以仅在声明了游标之后才能获得如此数量的记录?还是我总是要通过所有的记录来达到我的目标Plsql 如何在不打开pl/sql游标的情况下从中获取行数?,plsql,count,cursor,Plsql,Count,Cursor,想象一下声明一个pl/sql游标。通常您会打开它,获取记录,最后ROWCOUNT会告诉您检索到的记录数。但是,有没有一种方法可以仅在声明了游标之后才能获得如此数量的记录?还是我总是要通过所有的记录来达到我的目标 我这样问是因为我需要这样的东西:遍历游标,一个接一个地获取记录,但从一开始我就必须知道它将完整地检索多少记录。这应该可以回答这样的问题:现在我正在处理记录1/5。我已经通过使用SELECT COUNT(*)INTO解决了这个问题(与构建游标的SELECT子句相同),它可以工作,但是没有更
我这样问是因为我需要这样的东西:遍历游标,一个接一个地获取记录,但从一开始我就必须知道它将完整地检索多少记录。这应该可以回答这样的问题:现在我正在处理记录1/5。我已经通过使用SELECT COUNT(*)INTO解决了这个问题(与构建游标的SELECT子句相同),它可以工作,但是没有更好的方法吗?任何帮助都将不胜感激:)这不完全是您想要的,但这可能会奏效:
SELECT column1, column2, ..., columnN,
rownum current_row,
count(1) over () total
FROM table
WHERE ....;
这样,当您通过光标时,您将始终知道正在处理的记录的编号和记录总数。想象您有一个不透明的包,里面装着大理石。你想把包里的红色弹珠全部拿出来,但你想在拿出来之前知道有多少个红色弹珠。你将如何着手解决这个问题?当您可以这样做时,您就可以解决在获取结果之前知道光标将返回多少行的问题