SELECT @@ ROWCOUNT Oracle等效

hma*_*tos 0 sql oracle rowcount

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

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

然后我SELECT @@ROWCOUNT去获取上次执行的查询所影响的行数.

我已阅读过SQL%ROWCOUNT,但我无法在SELECT语句中使其工作

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

编辑:

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

sst*_*tan 7

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

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

select t.*,
       count(*) over () as num_rows
  from table t
 where ...
Run Code Online (Sandbox Code Playgroud)

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

select t.*,
       count(*) over () as num_rows
  from (query) t
Run Code Online (Sandbox Code Playgroud)