【问题标题】:select value into viarble in Oracle SQL在 Oracle SQL 中选择值到 viarble
【发布时间】:2023-03-12 19:18:01
【问题描述】:

我在查询方面需要一些帮助。

我想从表中选择行计数值,然后在不同的查询中使用该值。例如:

@rowcount = select count(*) from MyTable

select A*@rowcount, B/@rowcount
from MyOtherTable

谁能告诉我正确的语法是什么?我需要多次使用@rowcount,所以我宁愿只计算一次。

【问题讨论】:

  • 您是否收到上述错误?
  • @rowcount 不是有效的 PL/SQL 标识符。这看起来像是一段将在 SQL Server 上运行的 T-SQL 代码。不过,您已将此问题标记为 Oracle。您是否正在尝试将一段 T-SQL 代码转换为 PL/SQL?
  • 你不能像这样混合过程代码 (PL/SQL) 和常规 SQL。
  • @JustinCave:我不转换任何东西。我只是想在以后使用的表中的行数。

标签: sql oracle rowcount


【解决方案1】:

在 Oracle 中,您不能像这样混合过程代码和常规 SQL。

但是如果你使用这个:

select a / (select count(*) from mytable), 
       b / (select count(*) from mytable)
from myothertable;

Oracle 将只评估一次count(*)。无需将值存储在某处以提高性能。

如果需要,您可以将其移至公用表表达式中:

with row_count as (
   select count(*) as numrows
   from mytable
)
select a / (select numrows from row_count), 
       b / (select numrows from row_count)
from myothertable;

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 2021-09-13
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2016-05-21
    • 2013-05-20
    相关资源
    最近更新 更多