有人可以解释为什么这个PL / SQL块返回ORA-00979“不是GROUP BY表达式”错误吗?我觉得自己在服用疯药。
BEGIN
FOR r IN ( SELECT substr(o.object_name,1,30) oname
FROM user_objects o
GROUP BY substr(o.object_name,1,30)
) LOOP
NULL;
END LOOP;
END;
ORA-00979: not a GROUP BY expression ORA-06512: at line 2 00979. 00000 - "not a GROUP BY expression" *Cause: *Action:
如果我将其包装在CREATE PROCEDURE
中,它将起作用...
CREATE PROCEDURE mattp AS
BEGIN
FOR r IN ( SELECT substr(o.object_name,1,30) oname
FROM user_objects o
GROUP BY substr(o.object_name,1,30)
) LOOP
NULL;
END LOOP;
END;
我在12.1.0.2。我在18c(Oracle LiveSQL)中没有收到错误。
还有其他人遇到过吗?我认为在12c中,PL / SQL使用与SQL引擎相同的SQL解析器?