IT 팁/MS SQL

MS SQL 오류개선 #1. numeric을(를) 데이터 형식 numeric(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다.

OkayS2 2019. 9. 9. 09:00
반응형

안녕하세요. 「OkayS2」입니다.

 

오늘은 산술 오버플로 오류가 발생했을 때 해결방법에 대해 설명드리겠습니다.

 

Batch Job을 통해 산술 값을 컬럼에 저장하는 과정에서 'numeric을(를) 데이터 형식 numeric(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다.' 오류가 발생하였습니다.

 

테스트 및 처음 몇일 수행할때는 문제가 되지 않았지만, 어느 일자에 만들어진 계산된 값이 오류를 발생시킨 것 같았습니다.

 

열심히 검색을 한결과, 단순 테이블을 복사하여 만든 테이블의 numeric 변수 때문이라는 것을 알게 되었습니다.

계산값은 소수점이 생성되는데, 값이 저장되는 컬럼은 numeric(,0) 타입이기 때문에 산술 오버플로가 발생한 것 같습니다.

 

아래는 numeric 에러가 난 테이블로 계산되는 값이 저장되는 변수는 모두 numeric으로 생성되어 있습니다.

 

 



numeric은 전체 자릿수와 소수 자릿수가 고정된 숫자 데이터 형식으로,

테이블 생성시 Numeric뒤에 (,)로 범위를 입력하지 않으면 기본값으로 0이 들어가게 됩니다.

 

numeric

 

해당 오류를 개선하기 위해, 소숫점이 계산되는 컬럼의 numeric 타입을 수정하였습니다.

 

1
2
ALTER TABLE table_name ALTER COLUMN column_name NUMERIC(8,2)
ALTER TABLE table_name ALTER COLUMN column_name  NUMERIC(8,2)

 

해당 컬럼에는 소숫점 둘째 이상 넘어가지 않도록 Round(,1) 로 추가로 지정하였습니다.

반응형

'IT 팁 > MS SQL' 카테고리의 다른 글

MS SQL 기초 #1. INSERT 구문  (0) 2020.05.02
MS SQL 개발팁 #1. ISNULL(NULLIF) 사용법(CASE WHEN 0 THEN 1)  (0) 2019.08.25