PI에서 개발 하다가 CLOB DataType을 Control 해야 할 좋지 않은 기회가 발생 할 수 있다.

어떤 다른 방법이 존재 하는지는 모르겠으나, 아래 내용은 JavaMapping에서 처리 하기 위해

테스트로 구현한 예제이다. 


찾아보니 옜날엔  insert하고 다른 작업을 해줘야 하는데 10g부터는 그냥 되는거 같다!

jar파일 버젼이 낮으면 것도 안되는거같다 테스트해보고 안되면 jar 파일 변경하자!



import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.util.Properties; import oracle.jdbc.OraclePreparedStatement; public class ClobTest { public static void main(String args[]) { Connection DbConn = null; String strIP = "XXX.XXX.XXX.XXX"; String strPort = "1521"; String strSERVER = "ora"; String strID = "ID"; String strPASSWORD = "PASSOWRD"; String strURL = "jdbc:oracle:thin:@" + strIP + ":" + strPort + ":" + strSERVER; Date date = new Date(null); StringBuffer sb = new StringBuffer(); String ClobTest = "한글 테스트입니다 ㅁㄴㅇㄻㄴㅇㄹ"; try{ for(int i = 0 ; i < 3000 ; i++) { sb.append(ClobTest); } Class.forName("oracle.jdbc.driver.OracleDriver"); DbConn = DriverManager.getConnection(strURL, strID, strPASSWORD); String SQL = "INSERT into AUTOMAIL_INTERFACE(AUTOCODE, LEGACYID, AUTOTYPE, EMAIL, INSERTDATE, SENDYN, FROMADDRESS, TITLE, HTMLURL)" + "values (?, ?, ?, ?, ?, ?, ?, ?, ?)"; OraclePreparedStatement psAct = null; psAct = (OraclePreparedStatement)DbConn.prepareStatement(SQL.toString()); psAct.setString(1, "1000000000000375"); psAct.setString(2, "SAP400000000633"); psAct.setString(3, "SAP"); psAct.setString(4, "aaa@naver.com"); psAct.setDate(5, new java.sql.Date(date.getDate())); psAct.setString(6, "N"); psAct.setString(7, "test@naver.com"); psAct.setString(8, "업비"); psAct.setStringForClob(9, sb.toString()); psAct.execute(); //executeUpdate DbConn.close(); }catch(Exception e) { System.out.println(e.toString()); DbConn.close(); } } }



위소스를 테스트 해보면  4000byte ~ 32765 bytes이상만 된다..

그래서 아래 소스를 참고 해서 변경 하도록 하자...

CLOB clob = CLOB.createTemporary(conn, true, oracle.sql.CLOB.DURATION_SESSION, Const.NCHAR);
clob.trim(0);
Writer writer = clob.getCharacterOutputStream();
writer.write(bigString.toCharArray());
writer.flush();
writer.close();
st.setClob(1, clob);


Posted by INSPIEN
,