Java 에서 PreparedStatement 를 이용해 다음과 같이 쿼리하려고 합니다.
SELECT
(CASE
WHEN ?='CTS_AR_NM' THEN CTS_AR_NM
WHEN ?='SVC_DSCD' THEN SVC_DSCD
WHEN ?='PAGE_DSCD' THEN PAGE_DSCD
ELSE CTS_AR_CD
END) AS CODE
FROM TABLE
WEHRE .....
세개의 ? 에는 같은 String 이 넘어갑니다. 넘어온 텍스트를 비교해서 맞는 컬럼값을 리턴하기 위한 것이죠
그런데 이 쿼리를 실행하면
CLI0109E String data right truncation. SQLSTATE=22001
이라는 에러메세지를 내보냅니다.
? 안에 들어간 값이 너무 크다는 얘긴데
저 파라메터는 컬럼과 상관이 없이 단순 비교를 위해 쓰여졌기 때문에 그냥 setString 으로 보내려 했던 겁니다.
혹시 쿼리 안에 저 파라메터의 데이터타입이나 크기를 지정하는 방법이 있나요?
어떤 방법으로 해결이 가능할까요
고수님들의 조언 부탁드립니다.
|