因此,首先,我使用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;
也许您之后忘记了逗号解码(参数,'T',nvl(t1.version,'-'),t1.version)
decode(parameter,'T',nvl(t1.version,'-'),t1.version),sum(nvl(t1.liczba2,0))as left_to_dispatch