본문 바로가기
Database/Oracle

Java.sql.SQLException : ORA-00907 누락된우괄호 해결방법

by 나비와꽃기린 2019. 10. 7.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

기존에 잘 작동하던 쿼리에 정렬을 위한 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번으로 처리.