본문 바로가기
C++ 200제/코딩 IT 정보

MSSQL 동적 쿼리 사용할 상황, 콤마 및 일반 프로시저 문제

by vicddory 2019. 3. 4.

MSSQL 동적 쿼리 사용할 상황, 콤마 및 일반 프로시저 문제 


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


이렇게 사용하면 프로시저 에러는 해결됩니다.



MSSQL 동적 쿼리 사용할 상황, 콤마 및 일반 프로시저 문제SQL Procedure Error, comma



문제는 'ABC','123'을 하나의 문자열로 인식한다는 것입니다. 그것 때문에 오류가 발생해요. print로 확인하면 한 눈에 확인할 수 있어요.


쉼표, 콤마 때문에 하나의 문자열로 조건문(where)에 들어갔던 상황입니다.


원래 알고 있었고, 주의해야할 사항이라 인식하고 있었는데, 얕은 지식 수준 때문에 괜한 헛고생을 해버렸네요;;


MSSQL 동적 쿼리 사용할 상황, 콤마 및 일반 프로시저 문제

 written by vicddory

댓글