ORA-01787: only one clause allowed per query block 오류는 번역 과정에서 "1개의 구(phrase)만 허용"된다고 표시를 해놓았는데 "1개의 절(clause)만 허용됩니다."라는 의미가 더 적합해 보입니다.
ORA-01787 오류는 안내하는 바와 같이 쿼리블록에서 WHERE, GROUP BY, CONNECT BY, HAVING 등의 절이 2번 이상 사용되어 발생합니다. GROUP 부분을 점검하시면 바로 문제를 찾을 수 있을 것입니다. 다음은 해당 오류가 발생하는 예제 자료입니다.
ORA-01787: 질의 블록당 1개의 구만 허용됩니다 GROUP BY로 발생하는 경우
GROUP BY 절을 2번 사용하는 경우에 발생할 수 있습니다.
SELECT COLUMN_NAME
FROM TABLE_NAME
GROUP BY COLUMN_NAME
GROUP BY COLUMN_NAME;
4행에 오류:
ORA-01787: 질의 블록당 1개의 구만 허용됩니다
ORA-01787: 질의 블록당 1개의 구만 허용됩니다 HAVING으로 발생하는 경우
HAVING 절을 2번 사용하여 ORA-01787 오류가 발생하였습니다.
SELECT COLUMN_NAME
FROM TABLE_NAME
GROUP BY COLUMN_NAME
HAVING COLUMN_NAME = 'B'
HAVING COLUMN_NAME = 'B';
5행에 오류:
ORA-01787: 질의 블록당 1개의 구만 허용됩니다