본문 바로가기

IT · 프로그래밍

오라클 clob 형변환 및 hashmap 받기

반응형

 

먼저 insert, update 와 같은 Manipulation 작업에서는 ..
해당 파라미터 뒤에 :CLOB 이라고 붙여줌으로써 해결할 수 있습니다.

 INSERT INTO TABLE(

        ID

        ,CONTENTS  

    ) VALUES (

        #ID#

        ,#contents:CLOB#

    )

</insert>

 

<resultmap id="ResMap" class="java.util.HashMap">

    <result property="ID">

    <result property="CONTENTS" javatype="java.lang.String" jdbctype="CLOB">

 

</resultmap>

    <select id="SQL-VIEW" parameterclass="java.util.Map" resultmap="ResMap">

SELECT

            ID

            ,CONTENTS

        FROM TABLE

        WHERE

            ID = #ID#    

</select>



쿼리에서 직접 형변환을 시도해도 된다.

이렇게~~

DBMS_LOB.SUBSTR( CONTENTS, 4000, 1) AS CONTENTS

 

HashMap 을 통하여 Clob 를 받을 경우 String 으로 변환

SELECT * 같은 컬럼을 정확히 모를 경우 사용하게 되는 쿼리라든지

동적으로 만들어진 SELECT 쿼리는

일반적으로 알려져 있는 resultMap 을 설정하여 Clob 데이터를 받기는 어렵다.

이럴 경우 HashMap으로 받은 다음 아래와 같은 변환으로 전환하면 된다.

 

jsp 에서는 아래와 같이 instanceof java.sql.Clob 를 통하여 해당 데이터가 Clob 인지 확인한 다음

StringUtil.clobToString 메쏘드를 사용하여 변환한다.

 

<%
 Object value = null;
 if( row.get("CONTENTS") instanceof java.sql.Clob ) {
  value = StringUtil.clobToString(((java.sql.Clob)row.get("CONTENTS")));
 } else {
  value = row.get("CONTENTS");
 }

 out.println( value );
%>

 

StringUtil 클래스는 다음과 같이 구성되어 있다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.sql.Clob;
import java.sql.SQLException;

public class StringUtil {
 /*
  * Clob 를 String 으로 변경
  */
 public static String clobToString(Clob clob) throws SQLException,
   IOException {

  if (clob == null) {
   return "";
  }

  StringBuffer strOut = new StringBuffer();

  String str = "";

  BufferedReader br = new BufferedReader(clob.getCharacterStream());

  while ((str = br.readLine()) != null) {
   strOut.append(str);
  }
  return strOut.toString();
 }
}

반응형

'IT · 프로그래밍' 카테고리의 다른 글

PLAN_TABLE생성  (1) 2023.11.28
ORDER BY 1 2  (0) 2023.11.28
오라클 특정값이 속한 테이블 및 컬럼 찾기  (0) 2023.11.13
ftp 명령어  (0) 2021.10.08
erwin 이용 테이블 생성 주석포함 스크립트  (0) 2021.10.08