【问题标题】:SELECT @@ROWCOUNT Oracle equivalentSELECT @@ROWCOUNT Oracle 等效项
【发布时间】:2016-01-06 08:07:27
【问题描述】:

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

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

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

我已阅读有关 SQL%ROWCOUNT 的信息,但我无法使其在 SELECT 语句中工作

有没有办法在 Oracle 数据库中做到这一点?谢谢!

已编辑:

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

【问题讨论】:

  • Number of rows affected by an UPDATE in PL/SQL 的可能重复项也应该与 Insert 一起使用
  • 据我所知,没有确切的纯 SQL 等价物。您可以从 PL/SQL 执行此操作,但我不确定这是否是您想要的。如果您提供更多关于您将如何执行查询以及您需要计数的原因的上下文,那么您可以使用其他替代方法。
  • 谢谢@sstan,这就是我想知道的,我通过SELECT COUNT(*) FROM (QUERY) 的解决方法做到了。我放弃了这种方法,因为如果查询包含 ORDER BY 子句,它在 SQL Server 上不起作用,但它似乎在 Oracle 上运行良好

标签: sql oracle rowcount


【解决方案1】:

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

根据您的具体需要,另一种可能对您有用的方法是将count(*) over () 添加到您的select 语句中,以便为您提供总行数。它至少可以让您不必第二次重新执行查询。

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-11-08
  • 2012-09-18
  • 2022-01-01
  • 1970-01-01
  • 2016-06-03
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多