具有功能(12.1.0.2)的PL / SQL循环中的ORA-00979不是GROUP BY表达式

时间:2019-04-08 20:14:26

标签: oracle oracle-sqldeveloper ojdbc

有人可以解释为什么这个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解析器?

0 个答案:

没有答案