我有一个查询管理应用程序。以前我使用的是SQL Server数据库,并通过以前的查询来获取受影响的行数:
SELECT * FROM TABLE
(或任何其他选择查询)
然后我执行SELECT @@ROWCOUNT
以获取受上次执行查询影响的行数。
我已阅读SQL%ROWCOUNT
,但我无法在SELECT语句中使用
有没有办法在Oracle数据库中执行此操作?谢谢!
编辑:
我通过执行SELECT COUNT(*) FROM (QUERY)
来获取受查询影响的行数来解决这个问题,我放弃了这种方法,因为如果查询包含ORDER BY
子句,它在SQL Server中不起作用。 / p>
答案 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