`ORA-00979 не является выражением GROUP BY` в цикле PL / SQL с функцией (12.1.0.2) - PullRequest
0 голосов
/ 08 апреля 2019

Может кто-нибудь объяснить, почему этот блок 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?

...