WM_CONCAT 함수 oracle.sql.CLOB 에러? 문의 0 4 4,343

by 몽몽이 MYBATIS ORACLE [2021.11.08 09:24:10]


10g 환경에서 wm_concat을 써야하는 상황이 생겨서 함수를 사용중인데요.

로컬(윈도우, 리눅스) 서버에서는 이상 없었으나, 운영환경 배포에서 

oracle.sql.CLOB 

 이와 같은 현상이 발생하고 있습니다.

구글링을 해보니 to_char로 감싸면 된다는 답변이 있었는데요. 운영환경에 반영 할 시간이 짧아 아직 테스트는 하지 못했습니다.

to_char로 해결이 될까요? 안된다면 다른 방법이 있을까요..?

감사합니다.

by isNull [2021.11.08 09:43:24]

농부지기 :: myBatis.oracle.sql.CLOB@ 결과 오류시 (tistory.com)

형변환과 상관없이 wm_concat의 결과 길이가 4000byte 가넘어서 생기는 오류니까 길이를 줄이셔야 됩니다.

to_char를해서 해결되는건 to_char 함수가 동작하면서 4000byte를 넘는 내용을 그냥 임의 삭제해버리기 때문에 오류가 안날 뿐이지 근본적으론 내용이 잘리는 겁니다.

그러니 내용이 문제지 로직 문제는 아닌데...

여기서 그럼 내용을 자를것인지... 자르면 어떻게 자를건지를 확인하고 처리하셔야 겠죠


by 몽몽이 [2021.11.08 09:44:28]

일단 길이는 매우 짧습니다.

로컬에서 또한 값이 잘 나옵니다. 예를 들어 값은 2012,2013,2015 이정도 입니다.

운영환경에서만 이런 증상이 나옵니다


by 마농 [2021.11.08 10:53:33]

wm_concat 의 리턴 타입이 다른 듯 합니다.
테스트 서버는 VARCHAR2 / 운영서버는 CLOB
TO_CHAR 붙여 보세요.


by isNull [2021.11.08 11:47:20]

테스트 환경자체가 운영을 위한거니 테스트 환경이 운영과 다르면 테스트환경이 문제인거죠.

지금 안되는 운영기준으로 생각하셔야 됩니다.

그리고 운영기에서는 LOB으로 리턴된다는 이야기 자체가 공백이라던지 보이지 않는 문자가 포함될수도 있고, type만 LOB일수도 있습니다.

to_char로 해보고 안되면 trim(to_char()) 같은거로 해보고 테스트를 해보셔야 됩니다.

가능하면 더 개선된 기능이 있더라도 개발기가 운영기와 동일한 환경으로 구성해야 문제가 안생기겠죠.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입