SELECT @@ ROWCOUNT Oracle等效

时间:2015-10-08 15:39:15

标签: sql oracle rowcount

我有一个查询管理应用程序。以前我使用的是SQL Server数据库,并通过以前的查询来获取受影响的行数:

SELECT * FROM TABLE(或任何其他选择查询)

然后我执行SELECT @@ROWCOUNT以获取受上次执行查询影响的行数。

我已阅读SQL%ROWCOUNT,但我无法在SELECT语句中使用

有没有办法在Oracle数据库中执行此操作?谢谢!

编辑:

我通过执行SELECT COUNT(*) FROM (QUERY)来获取受查询影响的行数来解决这个问题,我放弃了这种方法,因为如果查询包含ORDER BY子句,它在SQL Server中不起作用。 / p>

1 个答案:

答案 0 :(得分:7)

我不知道Oracle中您可以在纯SQL中使用的任何完全等价物。

根据您的具体需要,可能适合您的替代方法是在count(*) over ()语句中添加select以向您提供总行数。它至少可以让您免于第二次重新执行查询。

select t.*,
       count(*) over () as num_rows
  from table t
 where ...

或者,如果您无法更改原始查询,则可以将其包装为:

select t.*,
       count(*) over () as num_rows
  from (query) t