삽질방지 팁

[MSSQL] expression을(를) 데이터 형식 tinyint(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다. 문제해결

삘쏘굿 2016. 4. 7. 17:53

하하하.................


정말 참으로 바보같은 짓을 하고야 말았습니다..........


if @hourIdx-@startIdx >= 0


이 부분이 문제가 되었던 함수에 포함된 내용인데요....


선언을 


DECLARE @startIdx tinyint

DECLARE @hourIdx tinyint


이렇게 tinyint 로 선언해놓고 뺄셈을 하였던 것입니다.....


tinyint 자료형의 범위는 0~255인데....... 음수가 나오면 당연히 에러가 날터인데.....


이거땜에 한 4시간은 삽질한듯..ㅠ


기본중에 기본인데 이걸 간과하다니....


역시 뭘하던지 기본이 중요합니다!!!


기초부터 잘 다지면서 저처럼 삽질하지 맙시다!!ㅠㅠ




* MS-SQL 데이터 형식 계층 구조 

 형 구분

 세부구분

 데이터형식

 바이트

 범위 및 특징

 문자형

 문자열

 char

 1~8000

 고정길이 또는 가변길이의 문자열

 varchar

 1~8000

 고정길이 또는 가변길이의 문자열 

 text

 1~2G

 최대문자열길이 2^31 - 1. 비유니코드문자열. varchar(max)를 사용하는 것을 권장. (추후 미지원 예정)

 유니코드

 문자열

 nchar

 1~8000

 최대 4000문자. (유니코드)

 nvarchar

 1~8000

 최대 4000문자(유니코드)

 ntext

 1~2G

 최대문자열길이 2^30 -1. 유니코드 문자열. 이것 역시 추후 미지원 예정이어, nvarchar(max)를 사용할 것을 권장.

 숫자형

 정수형

 tinyint

 1

 0~255

 smallint

 2

 -2^15 ~ 2^15 -1

 int

 4

 -2^31 ~ 2^31 -1

 bigint

 8

 -2^63 ~ 2^63 -1

 정확한

 숫자

 decimal

 2~17

 전체 자리수와 소수 자리수가 고정 -10^38+1~10^38-1

 numeric

 상동

 상동

 근사치

 real

 4

 -3.40E+38 ~ +3.40E+38

 float

 8

 -1.79E+308 ~ 1.79E+308

 통화 

 smallmoney

 4

 -214,748.3648 ~ 214,748.3647

 money

 8

 -922,337,203,685,477.5808 - 922,337,203,685,477.5807

 날짜와

 시간

 

 smalldatetime

 4

 1900.01.01~2079.06.06 (정확도 : 분)

 datetime

 8

 1753.01.01~9999.12.31 (정확도 : 밀리초)

 이진

 

 binary

 1~8000

 길이가 n인 고정길이 이진데이터

 varbinary

 1~8000

 가변길이 이진데이터

 image

 1~2G

 대용량의 유니코드,비유니코드,이진데이터 저장하기 위한 고정 및 가변길이 데이터. 추후 제거될 예정 (varbinary사용)

 특수

 

 bit

 1

 0 or 1만 가짐

 cursor

 -

 커서에 대한 참조가 들어 있는 변수 또는 저장 프로시저 OUTPUT 매개 변수의 데이터

 uniqueidentifier

 16

 16바이트의 GUID

 timestamp

 8

 rowversion과동일.

 Table

 

 테이블을 정의하여 사용

 xml  xml데이터 

 sysname

 nvarchar(128)

 오브젝트의 이름을 저장하는 SQL내부의 데이터형

 sql_variant

 

 서로 다른 유형의 데이터 사용가능

 공간형식

 

 공간형식(Geography, geometry)를 지원




ms-sql 관련 글 보기