代码之家  ›  专栏  ›  技术社区  ›  Matthew McPeak

`ORA-00979不是PL/SQL循环中带函数的GROUP BY表达式(12.1.0.2)

  •  0
  • Matthew McPeak  · 技术社区  · 5 年前

    有人能解释为什么这个PL/SQL块返回ORA-00979“not a GROUP BY expression”错误吗?我觉得我在吃疯狂的药丸。

    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(oraclelivesql)中没有得到错误。

    还有其他人遇到过这种情况吗?我认为在12c中PL/SQL使用了与SQL引擎相同的SQL解析器?

    0 回复  |  直到 5 年前