ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: %s, maximum: %s)
설정된 버퍼 값보다 더 큰 값을 들고오려함
- 읽을 바이트를 제한해서 읽기
SELECT DBMS_LOB.SUBSTR(lob_column, length, offset) FROM table_name;
4000 바이트보다 크다면 오프셋을 사용해 나눠서 취득할 수 밖에 없음 (PL/SQL일 경우 32767 바이트까지)
- 멀티 바이트 문자라면 자를 때 문제가 있을 수 있기 때문에 서버단에서 처리하도록 해야함
public String subStrByte(String str, int cutlen) { if(!str.isEmpty()) { str = str.trim(); if(str.getBytes().length <= cutlen) return str; else { StringBuffer sbStr = new StringBuffer(cutlen); int iCnt = 0; for(char ch: str.toCharArray()) { iCnt += String.valueOf(ch).getBytes().length; if(iCnt > cutlen) break; sbStr.append(ch); } return sbStr.toString(); } } else return ""; }
- 멀티 바이트 문자라면 자를 때 문제가 있을 수 있기 때문에 서버단에서 처리하도록 해야함