개발/Database
[MSSQL] SET ANSI_NULLS
Reimu.
2016. 6. 10. 23:50
반응형
SP 작성 중 INT 변수에 NULL을 기본값으로 넣고,
!= 로 NULL이 아닌지 체크를 하여, 다른 쿼리를 실행할 일이 생겼었음.
근데 잘 안되길래, 뭔가 이상하다 싶어서 아래와 같이 테스트를 해봤는데..
DECLARE @i INT = NULL SELECT @i IF @i = NULL BEGIN SELECT 2 END ELSE BEGIN SELECT 3 END
NULL이라고 제대로 찍히면서, 밑에 IF문에서는 ELSE로 들어가는 것이었다.
여기저기 물어보니 표준 문법이 아니라서, 조건에 일치하지 않을거다라고 답변을 받고,
SET ANSI_NULLS OFF 이 옵션을 상단에 넣어주면 제대로 동작할거다라고 원인파악을 했다.
근데 SET ANSI_NULLS OFF 이 옵션을 쓰면!!
인덱스가 걸려있는 테이블에서 뭔가를 변경할 때 실패한다고 한다.
그래서 항상 SET ANSI_NULLS 는 ON으로 써야하고,
IF @i IS NOT NULL과 같이 표준에 맞게 사용하는것으로 정리가 되었음.
이럴꺼면, SP만들때 컴파일 에러나게 처리하는게 어려웠을까라는 생각이 든다.
ON을 표준으로 해놓고, 컴파일 에러나게 했었으면 개발자들 실수가 좀 줄어들었을텐데..
반응형