[英]Query works with Oracle 10g but not with 11g?
DECLARE
trn VARCHAR2(2) := 'DD';
cur SYS_REFCURSOR;
BEGIN
OPEN cur FOR
SELECT
TRUNC(some_date, trn),
NULL AS dummy_2,
COUNT( DISTINCT dummy_1 )
FROM
(SELECT SYSDATE AS some_date, ROWNUM AS dummy_1 FROM dual)
GROUP BY
TRUNC(some_date, trn);
END;
This works with Oracle 10, but with Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
it results in: 这适用于Oracle 10,但对于
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
它会导致:
ORA-00979: not a GROUP BY expression
ORA-00979:不是GROUP BY表达式
ORA-06512: at line 5ORA-06512:第5行
Can anyone reproduce/explain this? 任何人都可以复制/解释这个吗? Thanks!
谢谢!
if you have access to support, it looks like Bug 9478304: LOOP FAILING WITH ORA-00979: NOT A GROUP BY EXPRESSION . 如果你有权访问支持,它看起来像Bug 9478304:LOOP FAILING WITH ORA-00979:不是表达式的组 。 This seems to affect 11.2.0.1 only.
这似乎只影响11.2.0.1。
I suspect your problem is that the NULL
in your SELECT
needs to be in the GROUP BY
even though it is a constant. 我怀疑你的问题是
SELECT
中的NULL
需要在GROUP BY
即使它是一个常量。 I can't imagine why it would work in Oracle 10 but not 11, though. 我无法想象为什么它可以在Oracle 10中工作,但不能在11中工作。
Does it work if you remove NULL AS dummy_2
? 如果删除
NULL AS dummy_2
它是否NULL AS dummy_2
?
This works without errors: 这没有错误:
DECLARE
trn VARCHAR2(2) := 'DD';
cur SYS_REFCURSOR;
BEGIN
OPEN cur FOR
SELECT
TRUNC(some_date, dtrn),
NULL AS dummy_2,
COUNT( DISTINCT dummy_1 )
FROM
(SELECT SYSDATE AS some_date, ROWNUM AS dummy_1 FROM dual) data1,
(SELECT trn AS dtrn FROM dual) data2
GROUP BY TRUNC(some_date, dtrn);
END;
Problem is with trn
variable and variable using in TRUNC
function. 问题在于使用
TRUNC
函数中的trn
变量和变量。 Maybe it is bug. 也许是bug。
Truncating the sysdate in the inner select appears to work fine: 截断内部选择中的sysdate似乎工作正常:
DECLARE
trn VARCHAR2(2) := 'DD';
cur SYS_REFCURSOR;
BEGIN
OPEN cur FOR
SELECT
some_date,
NULL AS dummy_2,
COUNT( DISTINCT dummy_1 )
FROM
(SELECT trunc(SYSDATE, trn) AS some_date, ROWNUM AS dummy_1 FROM dual)
GROUP BY
some_date;
END;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.