테이블에 값을 insert 하던 중 아래와 같은 오류가 발생하였습니다.
ORA-01438: value larger than specified precision allowed for this column
ORA-01438: 지정한 정도를 초과한 값이 열에 지정되었습니다
number 컬럼에 지정된 범위를 넘어서 입력할 경우 발생하는 오류 입니다.
테이블을 생성할 때 number 컬럼은
컬럼명 number(전체자릿수, 소수점아래자릿수)
의 형태로 정의합니다.
소수점아래자릿수는 전체자릿수의 크기에 포함됩니다.
정수 7자리, 소수점 아래 3자리로 표현하고 싶으시면
컬럼명 number(10,3)으로 표현하셔야 합니다.
예시
create table test(
no number(5,2)
);
와 같이 number(5,2) 타입의 컬럼이 있다고 합시다.
insert into test values(123.12);
당연히 들어갑니다.
insert into test values(123.456789);
123.47로 들어갑니다. 소수점 2자리 아래에서 반올림 됩니다.
insert into test values(1234.567);
ORA-01438 발생합니다.
1234.567을 소수 2자리 아래서 반올림하게 되면 1234.57이 되는데 이는 총 6자리이기 때문에
전체 자릿수로 지정한 5글자를 넘게 되어 오류가 발생합니다.
도움이 되시기를~~