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