티스토리 뷰

728x90
반응형

What?

4000bytes 넘는 값을 mybatis 에 바인딩할 때 SUBSTR() 사용 시 ora-01461 발생.
테이블 컬럼이 CLOB 이라도 에러 발생.
INSERT SELECT 문에서도 에러 발생.

INSERT INTO TEST_TABLE
SELECT SUBSTR(#{INPUT}, 4000)    /* ORA-01461 Error */
FROM DUAL;

Why?

Oracle 에서 VARCHAR2 최대 크기는 4000bytes.
SUBSTR() 에 입력 값이 String 타입으로 변환되어 4000bytes 이상이면 에러 발생.

Solution

Java 에서 입력 값을 substr() 처리 후에 mybatis SQL에서는 바인딩만 처리.
INSERT VALUE 문으로 변경.

INSERT INTO TEST_TABLE (INPUT)
VALUE (#{INPUT});
728x90
반응형

'DB' 카테고리의 다른 글

Oracle ORA-01401 SELECT 문에서 발생  (0) 2021.10.14
ORACLE NCHAR vs NVARCHAR2  (0) 2021.10.07
Oracle 페이지 처리  (0) 2020.05.26
Oracle 특수문자 검색  (0) 2020.05.25
Oracle vs MySQL  (0) 2019.07.14
반응형
300x250