본문 바로가기

DB/Oracle

ORA-01438, number 타입

테이블에 값을 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글자를 넘게 되어 오류가 발생합니다.


도움이 되시기를~~

'DB > Oracle' 카테고리의 다른 글

외래키 조회  (1) 2016.06.22
ORA-02292  (0) 2016.06.22
ORA-02449, 부모 테이블 삭제  (0) 2016.06.22
ORA-12899  (1) 2016.06.14
ORA-01789  (0) 2016.06.12