프로시저 작성시 IN 조건을 사용하는 경우 동적쿼리로 생성하는 경우가 많았는데
KEY 값 여러개를 파라메터 하나에 실어서 정적쿼리로 구현하는 샘플을 찾아서 남겨본다.
먼저 구분자를 ',' 로 한다고 가정할 경우
프로그램에서 파라메터를 'KEY1,KEY2' 같이 문자열을 구분자로 이어서 보내면
구분자를 기준으로 임시테이블에 담아서 해당 임시테이블을 가지고 조건절에 사용하면 된다
아래는 샘플 쿼리...
DECLARE @KEY_LIST VARCHAR(MAX); SET @KEY_LIST = 'KEY1,KEY2,KEY3'; -- KEY 값을 담을 임시테이블 생성 DECLARE @TEMP TABLE ( KEYVALUE VARCHAR(1000) NOT NULL ) IF RIGHT(@KEY_LIST, 1) <> ',' BEGIN SET @KEY_LIST = @KEY_LIST + ',' END DECLARE @I INT SET @I = CHARINDEX(',', @KEY_LIST) WHILE @I > 0 BEGIN DECLARE @KEYVALUE VARCHAR(1000) SET @KEYVALUE = RTRIM(LTRIM(SUBSTRING(@KEY_LIST, 1, @I - 1))) INSERT INTO @TEMP VALUES (@KEYVALUE) SET @KEY_LIST = RTRIM(LTRIM(SUBSTRING(@KEY_LIST, @I + 1, LEN(@KEY_LIST) - @I))) SET @I = CHARINDEX(',', @KEY_LIST) END SELECT * FROM @TEMP ;