기존에 잘 작동하던 쿼리에 정렬을 위한 Order by 추가.
Orange (또는 Sqldeveloper 나 Todd) 같은.. 툴에서는 작성한 쿼리가 잘 조회되는데
서버에서는 다음과 같은 Error가 발생하기 시작했다.
Java.sql.SQLException : ORA-00907 누락된우괄호
찾아보니 특정 Oracle 버전에는 서브쿼리에 Order by 를 사용하면 안된다니 어쩌구저쩌구
내용이 있었는데, 그런건 아닌것 같았고 ( 툴에서 쿼리가 잘 실행되었기에 )
<의심되는 사항 or 조치한 것>
1. 의심 + 조치
inlineParameterMap~ log에 찍힌 내용에 따라 파라미터 설정을 안해서?
Service -> Dao -> Xml로 데이터를 가져오는 구조였고 Struts2 사용하던 환경에서
<select id="test.getData" parameterClass=“map”> 이런 식으로 parameterClass를 정의해두고는
테스트한답시고 작성한 쿼리에는 파라미터에 하드코딩을 하여
#pram# 이런거 없이 서버를 기동했을 경우 (?)
2. 조치
툴에서 복사해 온 쿼리를 Shift+tab을 사용하여 왼쪽정렬을 하여
앞에 공백들 제거하고 </select> 부분도 삭제하고 다시 작성..
(추가)
3. < 또는 > 에 의한 누락된 우괄호
쿼리에 where 조건절에 조건으로 > 또는 < 같은 특수문자가 들어가야 할 때
<![CDATA[ ]]>로 감싸준다.
1번사항에 따라 파라미터를 service단에서 map에 담아주고
쿼리에는 #param# 으로 처리,
2번에 따라 trim() 같이 처리,
1,2 번 으로 조치한 다음 에러가 사라졌었는데
ORA-00907 에러가 또 발생
이때는 WHERE절에 date 관련 컬럼의 조건절을 추가했었을 때.
이때는 3번으로 처리.