본문으로 바로가기

  

 

이번 글에서는 ORA-01438: 이 열에 대해 지정된 전체 자릿수보다 큰 값이 허용됩니다. 에러 해결방법을 알아보도록 하겠습니다.

 

ORA-01438: 이 열에 대해 지정된 전체 자릿수보다 큰 값이 허용됩니다.

ORA-01438: "value larger than specified precision allowed for this column"

 

 

데이터를 추가하는 도중에 다음과 같은 에러가 발생하였습니다.

 

 

예제를 통하여 에러가 발생한 이유와 해결 방법에 대하여 알아보도록 하겠습니다.

아래의 쿼리는 DEPT 테이블의 DEPTNO 컬럼에 100이라는 값을 추가하는 예제입니다.

 

위의 쿼리를 실행하니 ORA-01438: "value larger than specified precision allowed for this column" 에러가 발생하였습니다.

에러가 발생한 이유는 자릿수가 맞지 않아서 입니다. 

저렇게만 말하면 이해가 잘 안가실 수 있으니 아래에서 자세히 살펴보도록 하겠습니다.

 

아래 테이블은 DEPTNO 컬럼에 대한 정보입니다.

DEPTNO 컬럼은 NUMBER (2, 0) 타입입니다. 

즉, 2자리 정수인 0~99까지 데이터를 추가할 수 있습니다.

 

해결 방법

1) 0~99까지의 데이터만을 삽입

2) DEPTNO 컬럼의 타입 값을 수정

 

DEPTNO 컬럼의 데이터 타입을 수정해서 쿼리를 다시 실행해보도록 하겠습니다.

 

아래 쿼리는 DEPTNO 컬럼의 데이터 타입을 NUMBER(3)으로 변경하는 예제입니다.

 

DEPTNO 컬럼의 타입을 NUMBER(3)으로 변경했으니 이제 허용 범위는 0~999 세 자릿수까지 허용 가능합니다.

DEPTNO에 다시 100을 넣어서 데이터를 추가해보도록 하겠습니다.

 

정상적으로 데이터가 삽입된 것을 확인하실 수 있습니다.

 

 

Reference

MODIFY - 테이블 컬럼(명, 크기, 타입 등) 변경하는 방법