【发布时间】:2020-04-20 08:33:56
【问题描述】:
首先,我使用 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 工作正常:
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;
【问题讨论】:
-
你的 ORM 工具是什么?我们可能需要知道这一点。另外,请在您调用此查询的地方包含相关代码。
-
做了一些修改。
标签: sql oracle group-by orm decode