这不是一个按表达式分组

问题描述 投票:0回答:1

因此,首先,我使用ORM连接并从Oracle DB获取数据。

当我从某个数据库管理工具调用存储过程时,一切正常。

问题开始,当我想从我的ORM中运行它时。它给出了一个错误:

ORA-00979: this is not a group by expression

通常,在未聚合或数据不恒定时,不会在子句中出现在分组中。

该查询包含在存储过程中,因此每次我尝试运行它时,查询都是相同的,并且按子句将其包含在分组中。

我什至登录到相同的oracle用户。我也做了一些痕迹,但没有什么奇怪的。

查询看起来像:

 for rec in (
select t1.field1,
      t1.field2,
      t1.field3,
      t1.field4,
      t1.field5,
      decode(parameter,'T',nvl(t1.version, '-'),t1.version)
      sum(nvl(t1.liczba2,0)) as left_to_dispatch
    from table_1 t1 
    group by
      t1.field1,
      t1.field2,
      t1.field3,
      t1.field4,
      t1.field5,
      decode(parameter,'T',nvl(t1.version, '-'),t1.version)) 
  loop 
    null; 
  end_loop;

问题是:ORM是否可以在数据库中(而是在会话中)设置任何设置,可能会导致这种错误?

顺便说一句。我尝试将解码替换为大小写:我遇到了相同的错误。

我试图将解码替换为NVL的,我遇到了同样的错误。

但是错误仅来自此ORM工具,当我尝试从PLSQL Developer运行它时,一切正常。

有什么想法吗?

正在调用此查询的ORM代码(DevExpress的XPO):

  SelectedData result = session.ExecuteSproc("schema_package_pcg.package_procedure",id)

PS。当我将查询更改为这样的查询时,ORM运行正常:

for rec in (
    select t1.field1,
          t1.field2,
          t1.field3,
          t1.field4,
          t1.field5,
          t1.version,
          sum(nvl(t1.liczba2,0)) as left_to_dispatch
        from table_1 t1 
        group by
          t1.field1,
          t1.field2,
          t1.field3,
          t1.field4,
          t1.field5,
          t1.version)
      loop 
        null; 
      end_loop;
sql oracle group-by orm decode
1个回答
0
投票

也许您之后忘记了逗号解码(参数,'T',nvl(t1.version,'-'),t1.version)

decode(parameter,'T',nvl(t1.version,'-'),t1.version),sum(nvl(t1.liczba2,0))as left_to_dispatch

© www.soinside.com 2019 - 2024. All rights reserved.