(Oracle) ORA-01438: value larger than specified precision allowed for this column 에러 MSSQL_MDB_Oracle

java.sql.SQLException: ORA-01438: value larger than specified precision allowed for this column
이 에러는 컬럼의 크기를 지정해서 불러올때 그 크기가 원래 지정된 속성의 길이보다 길기 때문에 에러가 났다는 메세지다.

즉, 해당 컬럼(column) 의 길이 속성이 10 인데, 10 이상인 11이나 12 같이 더 큰 길이로 지정해서 불러오려고 했다는 의미다.
예를 들어, varchar2(10) 속성으로 만들어진 컬럼이 있는데, 이를 varchar2(12) 정도로 변환해서 불러오려고 하면 발생한다.

내 경우에는 해당 컬럼이 varchar2(10) 속성으로 지정된 컬럼인데, 이를 cast 를 이용해 숫자형으로 변환한 후 불러오려고 할때 에러가 발생했다.

예를 들어 컬럼명이 price 라고 가정하고,

cast(price as Number(10))

이라고 지정했는데, 에러가 발생했다.
글쎄, 정확한 이유를 모르겠는데, 숫자형으로 10자리를 지정했다면 같은 길이가 아닐까 싶지만, 아무튼 에러가 난다.
아래와 같이 길이를 지정하지 않고 불러오면 에러가 발생하지 않는다.

cast(price as Number)

또는,

cast(price as int)

를 쓸수도 있다.

오라클에서 Number 는 숫자형을 의미하는 것으로, int 보다 더 큰 범위의 숫자를 지정할때 사용한다.


덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


통계 위젯 (화이트)

1121531
9847
10318442

google_myblogSearch_side

▷검색어

Flag Counter style2