mssql 프로시저 질문드립니다. 0 2 3,119

by 준일정 [SQL Query] 프로시저 mssql [2018.12.14 17:49:01]


캡처.JPG (68,620Bytes)

이런 데이터인데요 일단... 


 


            declare @empNO varchar(10) set @empNO ='1010'
            declare @B_empno    varchar(100)   

            set @B_empno = @empNO +'1010'
           --@B_empno의 예상 결과값은 10101010이 나올터이고... 


            select 
            *
            from emp 
            where empno =@B_empno
            print(@B_empno) 
            --실제 출력 할 때도 10101010이 나오지만 


에러 메시지 창은 

메시지 8115, 수준 16, 상태 8, 줄 7
varchar을(를) 데이터 형식 numeric(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다.
10101010

라고 뜹니다. 결론적으로는 10101010에 해당하는 empno가 없어서 조회가 안되는건 맞는데, 

산술 오버플로우가 뜨는게 이해가 되질 않습니다... 

자료형은 varchar인데 말이죠... 왜 이런 오류가 발생하는 건가요??? 

 

by 마농 [2018.12.16 11:33:13]

숫자 와 문자를 비교할 때 문자가 숫자로 자동 형변환되게 됩니다.
emp 테이블의 empno 항목이 숫자 numeric(4) 인 듯 합니다.
'10101010' 숫자로 바꾸다가 길이 초과 오류가 나는 것입니다.


by 준일정 [2018.12.20 09:19:21]

답변 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입