O/Oracle

ORACLE CLOB타입을 이용한 무한(?) 텍스트 입력

안뇽헬로 2012. 3. 21. 01:15

오라클의 VARCHAR 타입은 4000이 MAX이다.
그나마도 실제로 올려보믄 1500자 내외에서 짤려버린다.
방법은 있지만 일반적으로 파일이나 이미지 업뎃할때 사용하는 CLOB 타입으로 해결두 가능하다.
4GB까정...
간단하게 예제만으로도 충분하리라 본다.

[INSERT 예제..]

-- PLSQL 프로시저로............
CREATE OR REPLACE PROCEDURE TCNWEB.p_upt_freeboard
(
p_subject IN WB_FREEBOARD.FREE_SUBJECT%TYPE -- 제목
, p_contents IN WB_FREEBOARD.FREE_CONTENTS%TYPE -- 내용
, p_parents IN WB_FREEBOARD.FREE_PARENTS%TYPE -- 댓글일 경우
, p_user IN WB_FREEBOARD.FREE_USER%TYPE
)
IS
v_clob CLOB;

BEGIN

IF p_contents IS NOT NULL THEN

INSERT INTO WB_FREEBOARD(FREE_SUBJECT, FREE_CONTENTS, FREE_PARENTS, FREE_USER)
VALUES(p_subject, EMPTY_CLOB(), p_parents, p_user)

RETURNING FREE_CONTENTS INTO v_clob;

DBMS_LOB.WRITE(v_clob, LENGTH(p_contents), 1, p_contents);

COMMIT;

END IF;

END p_upt_freeboard;

SQL에서 사용한다믄...
EXEC p_upt_freeboard('테스트6', '다시한번2', '', 'aaaa');


[SELECT 예제..]

SELECT SEQ_NUM
, FREE_SUBJECT
, DBMS_LOB.SUBSTR(FREE_CONTENTS, DBMS_LOB.GETLENGTH(FREE_CONTENTS), 1)
FROM WB_FREEBOARD