상세 컨텐츠

본문 제목

MSSQL 프로시저 내에서 동적쿼리 생성

데이터베이스

by 김일국 2012. 3. 28. 16:59

본문

--특정값 없이 모든 레코드 SELECT ( EXEC문 실행)

CREATE PROCEDURE [dbo].[SP_TEST]
AS
BEGIN
DECLARE @MM NVARCHAR
DECLARE @QUERY_VAR NVARCHAR(50)
DECLARE @QUERY_STMT AS NVARCHAR(500)

SET @MM = '01'
IF @MM = '01' BEGIN SET @QUERY_VAR = 'DONG_1' END
SET @QUERY_VAR = 'DONG_1'
SET @QUERY_STMT = 'SELECT '+@QUERY_VAR+' FROM TBL_COMP_ROOM'
--PRINT @QUERY_STMT --테스트시 아래줄 주석 후 실행
EXEC (@QUERY_STMT)

END

 

--특정값 뽑기 ( EXEC SP_EXECUTESQL문 사용)

DECLARE @MM NVARCHAR(10)
DECLARE @QUERY_VAR NVARCHAR(100)
SET @MM = '01'
IF @MM = '01' BEGIN SET @QUERY_VAR = 'DONG_1' END

DECLARE @STMT AS NVARCHAR(500)
DECLARE @PARAMS AS NVARCHAR(500)
DECLARE @ORDERRET AS NVARCHAR(100)

SET @STMT = N'SELECT @V_ORDER = '+@QUERY_VAR+' FROM TBL_COMP_ROOM WHERE ISNULL(@P_ORDER,'''')<> '''''
SET @PARAMS = '@P_ORDER AS VARCHAR(100), @V_ORDER AS VARCHAR(100) OUTPUT' -- OUTPUT 키워드에 주의
--PRINT @STMT
-- 여기도 OUTPUT 키워드를 지정한다.
EXEC SP_EXECUTESQL @STMT, @PARAMS, @P_ORDER = @QUERY_VAR, @V_ORDER = @ORDERRET OUTPUT --(입력변수,출력변수 OUTPUT 주의)

-- 확인   
SELECT @ORDERRET

관련글 더보기

댓글 영역