Sql 选择@@ROWCOUNT Oracle等效项

Sql 选择@@ROWCOUNT Oracle等效项,sql,oracle,rowcount,Sql,Oracle,Rowcount,我有一个查询管理的应用程序。以前我使用的是SQL Server数据库,为了通过查询获得受影响的行数,我通常执行以下操作: 从表中选择*(或任何其他选择查询) 然后我执行选择@ROWCOUNT以获取受上次执行的查询影响的行数 我已经读过关于SQL%ROWCOUNT,但我无法使它在SELECT语句中工作 有没有办法在Oracle数据库中执行此操作?。谢谢大家! 编辑: 我通过从(QUERY)中执行选择COUNT(*)来解决这个问题。为了获得受查询影响的行数,我讨论了这种方法,因为如果查询包含ORDE

我有一个查询管理的应用程序。以前我使用的是SQL Server数据库,为了通过查询获得受影响的行数,我通常执行以下操作:

从表中选择*(或任何其他选择查询)

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

我已经读过关于
SQL%ROWCOUNT
,但我无法使它在SELECT语句中工作

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

编辑:


我通过从(QUERY)
中执行
选择COUNT(*)来解决这个问题。为了获得受查询影响的行数,我讨论了这种方法,因为如果查询包含
ORDER by
子句,它在SQL Server中不起作用。

我不知道在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

可能的重复应该与
Insert
tooth一起使用。据我所知,没有完全相同的纯SQL。您可以从PL/SQL执行此操作,但我不确定这是否是您想要的。如果您提供更多关于如何执行查询以及您需要计数的原因的上下文,那么您可能可以使用其他选项。谢谢@sstan,这就是我想知道的,我是通过一种变通方法完成的,即从(查询)
中选择计数(*)。我之所以讨论这种方法,是因为如果查询包含ORDER BY子句,它在SQL Server上不起作用,但在Oracle上似乎效果很好。我必须同意Juan上面的评论,即这是一种重复。给出的答案是一个更好的答案,没有任何解决办法。