SELECT @@ROWCOUNT Oracle 等效项
SELECT @@ROWCOUNT Oracle equivalent
我有一个查询管理应用程序。以前我使用 SQL 服务器数据库,并通过我曾经执行的查询获取受影响的行数:
SELECT * FROM TABLE
(或任何其他 select 查询)
然后我 SELECT @@ROWCOUNT
获取受最后执行的查询影响的行数。
我已阅读有关 SQL%ROWCOUNT
的内容,但我无法在 SELECT 语句中使用它
有没有办法在 Oracle 数据库中执行此操作?。谢谢!
已编辑:
我已经通过 SELECT COUNT(*) FROM (QUERY)
获取受查询影响的行数解决了这个问题,我放弃了这种方法,因为如果查询包含 ORDER BY
子句。
我不知道 Oracle 中有任何您可以在纯 SQL 中使用的确切等价物。
根据您的具体需要,另一种可能对您有用的替代方法是在 select
语句中添加 count(*) over ()
以提供总行数。它至少可以让您免于第二次重新执行查询。
select t.*,
count(*) over () as num_rows
from table t
where ...
或者,如果你不能改变原来的查询,那么你可以这样换行:
select t.*,
count(*) over () as num_rows
from (query) t
我有一个查询管理应用程序。以前我使用 SQL 服务器数据库,并通过我曾经执行的查询获取受影响的行数:
SELECT * FROM TABLE
(或任何其他 select 查询)
然后我 SELECT @@ROWCOUNT
获取受最后执行的查询影响的行数。
我已阅读有关 SQL%ROWCOUNT
的内容,但我无法在 SELECT 语句中使用它
有没有办法在 Oracle 数据库中执行此操作?。谢谢!
已编辑:
我已经通过 SELECT COUNT(*) FROM (QUERY)
获取受查询影响的行数解决了这个问题,我放弃了这种方法,因为如果查询包含 ORDER BY
子句。
我不知道 Oracle 中有任何您可以在纯 SQL 中使用的确切等价物。
根据您的具体需要,另一种可能对您有用的替代方法是在 select
语句中添加 count(*) over ()
以提供总行数。它至少可以让您免于第二次重新执行查询。
select t.*,
count(*) over () as num_rows
from table t
where ...
或者,如果你不能改变原来的查询,那么你可以这样换行:
select t.*,
count(*) over () as num_rows
from (query) t