Dynamic sql in parameters

Published Jul 10, 2015 | Updated Sep 17, 2022 | 0 comments

프로시저 작성시 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
;

TAG INFORMATION

Learn more on this topic

Related Blog Posts

MSSQL Identity Column seed

테이블에 적용된 마지막 SEED 값을 10 으로 바꾸는 경우 DBCC CHECKIDENT(‘테이블명’, RESEED, 10) 다음 행이 insert 될때는 11 부터 됨.

read more

MSSQL MDF 복구법

갑자기 WSS 로 구축한 Teamsite 가 안열린다 - DB 에 연결할 수 없다네... 그래서 이래저래 원인을 찾던중 WSS 에 사용하는 원격 SQL DB 가 MDF 파일 자체에 문제가 생긴듯... Management Studio 로 새로 연결을 끊고 다시 연결을 할려니 재 연결이 안되네... 헐 -_-;; 그래서 또 구글링을 하다가 찾음..... 출처 :...

read more
MSDE 2005 Login 서버 인증

MSDE 2005 Login 서버 인증

VS.Net 설치시 MSDE2005 가 설치된 상태 sa 계정으로 SQL Server 모드로 로그인을 했으나 실패   사용자 'sa'이(가) 로그인하지 못했습니다. 이 사용자는 트러스트된 SQL Server 연결과 관련되어 있지 않습니다. (Microsoft SQL Server, 오류: 18452) 도움말을 보려면 다음을 클릭하십시오:...

read more

Join in the conversation

Leave a Comment

0 Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

무료 온라인 전광판

전광판

텍스트를 입력하고 텍스트 효과 및 배경효과 를 변경해서 전체화면으로 표시할 수 있는 전광판 용도로 사용하실 수 있습니다. 각종 스포츠 및 공연 관람시 응원 용도로 사용이 가능합니다.

Carousel

여러개의 슬라이드를 추가하여 프레젠테이션 및 이미지 슬라이드 용도로 사용하실 수 있습니다. 브라우저가 포함된 IT 기기로 큰 모니터에 연결하여 매장 내 공지사항 및 메뉴소개를 이미지로 표시할 수 있습니다.

Pin It on Pinterest

Shares
Share This

Share This

Share this post with your friends!

Shares