Completion over Perfection

마이바티스 (MyBatis) 오라클 sql 오류 해결 (ORA-00933) 본문

자바 (Java)

마이바티스 (MyBatis) 오라클 sql 오류 해결 (ORA-00933)

난차차 2023. 5. 2. 16:51
반응형

마이바티스 (MyBatis) 오라클 sql 오류 해결 (ORA-00933)

ORA-00933 : SQL COMMAND NOT PROPERLY ENDED

java.sql.SQLSyntaxErrorExceiption: ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다. 

 

분명 sql developer에서 확인했을 때는 아무 이상없이 쿼리실행 + 결과물 출력까지 잘 되는데, 

JAVA의 Mybatis에서 이를 옮겨서 실행하면 저 에러가 발생하는 것이었다. 

 

원인은 마지막에 세미콜론을 붙여서 발생한 오류!

 

select genre_name, genre_order 
from channel 
where country_code = 'EN' 
order by TO_NUMBER(channel_order);

위와 같은 쿼리문이었는데, 

sql developer에서는 잘 실행되고 결과물도 잘 출력. 

 

channel_order에 TO_NUMBER를 붙여준 이유는 순서를 정하는 숫자인데, String형으로 되어있어서 Integer형으로 변환하기 위함이었다. 

 

처음에는 마이바티스에서 오류가 나길래, 

뭔가 TO_STRING 문법을 그냥 쓰면 안되나? 싶어서 찾아봤는데 

그런것도 아닌것 같았고.. 

 

구글링하다 보니까 결국 마지막에 세미콜론이 붙어있는채로 

마이바티스에 옮겨적다보니 발생한 오류였다. 

 

마이바티스에서 적을때는 아래와 같이 세미콜론을 제거하고 저장한 뒤에 실행해보자!

 

 

<select id="selectGenreOrder" resultType="map">
	select genre_name, genre_order 
	from channel 
		<where> 
  			country_code = 'EN'
		</where>
		<trim prefix="order by">
			TO_NUMBER(channel_order)
		</trim>
</select>

 

반응형
Comments