ERROR CODE / 설명
소수점 데이터 타입 컬럼에 자리수를 초과하는 데이터를 넣을려는 경우 발생하는 에러
ORA-01438: value larger than specified precision allowed for this column
발생 원인
컬럼 COL2 는 NUMBER(7, 2)로 정수 5자리, 소수점 이하 2자리로 구성되어 있다. 정수 6자리를 저장하다가 에러 발생함
-- [1] TEST 테이블 생성
CREATE TABLE IMSI_TABLE ( col1 number(3) , col2 number(7,2) );
-- [2] TEST 테이블 INSERT 시도
declare
i integer;
begin
INSERT INTO imsi_table ( col1, col2 )
VALUES
(
'1',
100000
);
end;
해결방법
컬럼의 데이터 타입을 변경한다. ( 단, 대용량 테이블인 경우 컬럼 변경 작업 시간이 장시간 소요되고 그 동안 테이블에 LOCK까지 설정되므로 TRANSCATION이 없는 시간대에 작업을 하는 것이 좋다 )
ALTER TABLE IMSI_TABLE MODIFY col2 number(8,2);
정상확인
위 발생 원인 [2] SCRIPT를 재시도하면 데이터가 정상적으로 저장됨
'ORACLE > ERROR CODE' 카테고리의 다른 글
ORA-00001 : unique constraint (constraint_name) violated (0) | 2024.04.19 |
---|---|
ORA-28040 : NO matching authentication protocol (0) | 2024.01.09 |
ORA-01795 : maximum number of expressions in a list is 1000 (0) | 2024.01.08 |
ORA-01704 : string literal too long (2) | 2024.01.07 |
ORA-01652 : unable to extend temp segment by 1280 in tablespace TS_BIG_D01; (0) | 2024.01.06 |