본문 바로가기
컴퓨터관련/MS-SQL

[MS-SQL]0으로 나누어 에러 발생 시

by 빛과 어둠사이 2019. 8. 2.
728x90
반응형
SMALL

MSSQL에서 0으로 나누면

에러가 발생을 합니다.


Divide by zero error encountered.

이렇게 에러가 발생합니다.


에러가 발생하도록 

샘플 쿼리를 작성하였습니다.

SELECT 100 / 0

위처럼 쿼리를 작성하면

아래처럼 에러가 발생합니다.




이렇게 0으로 나눠서 에러가 발생할 때

조치하는 방법으로는

SET으로 선언을 해주면 됩니다.


아래처럼 쿼리를 작성하였습니다.

SET으로 3개 선언하였습니다.

SET ANSI_WARNINGS OFF
SET ARITHIGNORE ON
SET ARITHABORT OFF

SELECT 100 / 0

위처럼 쿼리를 작성하였더니

아래처럼 NULL로 값을 반환합니다.




위 SET으로 선언한 것들에 대한

설명을 드리도록 하겠습니다.



SET ANSI_WARNINGS OFF

집계를 하는 중 오류가 발생하여

에러 메시지가 발생하면

레코드로 인식하여 에러가 뜨게 됩니다.

그것으로 OFF 로 설정하는 것입니다.

그래서 경고를 꺼놓는 것입니다.



SET ARITHIGNORE ON

쿼리 도중 오버플로 발생

또는 0으로 나누어 오류가 발생 시

오류메시지 반환 여부를 제어합니다.


오류메시지가 반환할 지 여부를 제어하는 것으로

오버플로 또는 0으로 나누면

NULL값이 반환됩니다.



SET ARITHABORT OFF

SET ARITHIGNORE ON으로 선언 시

오류 발생하면 트랜잭션을 롤백시킵니다.

이렇게 선언 함으로서

오류난 것에 대해서는 NULL로 반환하고

하위 쿼리를 계속해서 실행을 시킵니다.




이상으로 SQL SERVER에서 0으로 나누어

에러가 발생 시 조치하는 방법이였습니다~



728x90
반응형
LIST