[Oracle|오라클] ORA-01785: ORDER BY 항목은 SELECT 목록 식의 수라야 합니다 (UNION ALL, DECODE)

 ORA-01785: ORDER BY 항목은 SELECT 목록 식의 수라야 합니다

 

ORDER BY 절에서 해당 오류가 발생 하였을 경우 ORDER BY 절에 함수(DECODE, NVL, TO_NUMBER, 사용자함수 등)를 사용하였는지 확인해 보아야 한다.

 

일반적으로 ORDER BY 절에 함수를 사용하는건 아무런 이상이 없지만 해당 쿼리문에 집합연산자 ( UNION, UNION ALL , MINUS, INTERSECT)가 사용이 되었다면 오류가 발생 한다.

 

집한연산자가 사용된 쿼리문의 ORDER BY 절에는 함수 사용을 하지 말아야하며 꼭 사용해야 한다면 해당 쿼리문을 인라인 뷰(INLINE VIEW)로 감싸서 ORDER BY를 하면 된다.

  

오류발생 : UNION ALL을 사용한 쿼리문에서 ORDER BY 절에 DECODE 함수 사용

 

오류발생 : UNION ALL을 사용한 쿼리문에서 ORDER BY 절에 TO_NUMBER 함수 사용

 

해결방법 : UNION ALL을 사용한 쿼리문을 인라인 뷰로 감싸서 ORDER BY를 하면 함수를 사용하여도 오류가 발생하지 않는다. 

성능을 생각한다면 ORDER BY 절에 함수를 사용하지 않는 것이 옳을 것이다.

 

 


 

댓글

Designed by JB FACTORY