Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql 如何在不打开pl/sql游标的情况下从中获取行数?_Plsql_Count_Cursor - Fatal编程技术网

Plsql 如何在不打开pl/sql游标的情况下从中获取行数?

Plsql 如何在不打开pl/sql游标的情况下从中获取行数?,plsql,count,cursor,Plsql,Count,Cursor,想象一下声明一个pl/sql游标。通常您会打开它,获取记录,最后ROWCOUNT会告诉您检索到的记录数。但是,有没有一种方法可以仅在声明了游标之后才能获得如此数量的记录?还是我总是要通过所有的记录来达到我的目标 我这样问是因为我需要这样的东西:遍历游标,一个接一个地获取记录,但从一开始我就必须知道它将完整地检索多少记录。这应该可以回答这样的问题:现在我正在处理记录1/5。我已经通过使用SELECT COUNT(*)INTO解决了这个问题(与构建游标的SELECT子句相同),它可以工作,但是没有更

想象一下声明一个pl/sql游标。通常您会打开它,获取记录,最后ROWCOUNT会告诉您检索到的记录数。但是,有没有一种方法可以仅在声明了游标之后才能获得如此数量的记录?还是我总是要通过所有的记录来达到我的目标


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

这不完全是您想要的,但这可能会奏效:

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

这样,当您通过光标时,您将始终知道正在处理的记录的编号和记录总数。

想象您有一个不透明的包,里面装着大理石。你想把包里的红色弹珠全部拿出来,但你想在拿出来之前知道有多少个红色弹珠。你将如何着手解决这个问题?当您可以这样做时,您就可以解决在获取结果之前知道光标将返回多少行的问题