먼저 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 |