insert 시, char를 clob으로 바꾸기 0 1 1,696

by 꼬막 [SQL Query] CLOB [2020.10.14 13:24:24]


INSERT INTO BOARD ( 
   WRITE_NO, WRITE_TITLE, CONTENTS
 , WRITE_LEVEL, WRITE_INDEX, WRITER_USER_CODE 
 )
 SELECT   #{WRITE_NO}, #{WRITE_TITLE}, #{CONTENTS:CLOB}
              , A1.WRITE_LEVEL+1, A1.WRITE_INDEX+1, 'admin' 
    FROM BOARD A1 
  WHERE WRITE_NO = '1234' 

위와같이 BOARD 테이블에서 조회 후 조회값과, 파라미터 값을 이용해서 BOARD값에 insert를 해야하는 상황입니다... BOARD.CONTENTS 컬럼 타입은 CLOB이구요 CONTENTS에 4000자 이상의 값이 들어가면 ORA-01461:LONG 값은 long 열에만 입력할 수 있습니다 라는 에러가 발생하네요ㅜ 아마도 파라미터로 받은 CONTENTS의 값은 컬럼타입이 VARCHAR로 잡히는것 같은데.. TO_LOB()을 사용하면 ORA-00932: 일관성 없는 데이터 유형: LONG BINARY이(가) 필요하지만 CHAR임 이라는 에러가 발생하구요ㅠ 어떻게 처리하면 좋을까요 ?

by 신이만든지기 [2020.10.16 11:39:25]
DECLARE
  TOO_LONG_VARCHAR VARCHAR2(32000);
BEGIN
    TOO_LONG_VARCHAR := 'very very long~~~ string';
    INSERT INTO table_name VALUES ( 1, TOO_LONG_VARCHAR);
    COMMIT;
END;

32000자까지는 이렇게 PL/SQL으로 입력가능하다고 나와 있네요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입