MSSQL 동적 쿼리 사용할 상황, 콤마 및 일반 프로시저 문제
SQL Procedure Error, comma
얼마 전, 프로시저 테스트한다고 where 조건에 값을 추가해 봤습니다. 동적 쿼리로 구현되어 있었는데, 테스트 때문에 콤마로 구분 된 값 여러개를 삽입했었죠. 그랬더니 오류가 발생하더군요.
1 2 3 | SELECT * FROM 검색할 테이블 WHERE 조건 in ('ABC','123') | cs |
예를 들어 위와 같이 사용하면 오류가 발생합니다.
하지만 아래처럼 MSSQL 사용하면 오류가 발생하지 않아요.
1 2 3 | declare @tmp varchar(100) set @sql = @sql + 'where 조건 in('+@tmp+')' | cs |
동적 쿼리를 사용합니다.
1 2 3 | SELECT * FROM 검색할 테이블 WHERE 조건 in (@tmp) | cs |
이렇게 사용하면 프로시저 에러는 해결됩니다.
SQL Procedure Error, comma
문제는 'ABC','123'을 하나의 문자열로 인식한다는 것입니다. 그것 때문에 오류가 발생해요. print로 확인하면 한 눈에 확인할 수 있어요.
쉼표, 콤마 때문에 하나의 문자열로 조건문(where)에 들어갔던 상황입니다.
원래 알고 있었고, 주의해야할 사항이라 인식하고 있었는데, 얕은 지식 수준 때문에 괜한 헛고생을 해버렸네요;;
MSSQL 동적 쿼리 사용할 상황, 콤마 및 일반 프로시저 문제
written by vicddory
댓글