MSSQL 동적쿼리 실행 Output 변수에 담기

DB 작업을 하다보면 동적으로 쿼리를 실행하는 일이 종종 있습니다. 보안에 좋지 않은 방법이긴 하지만, 배치성의 경우라면 보안에도 크게 문제가 되지 않습니다.


하여 오늘은 MSSQL 동적쿼리 실행 Output 변수에 담기에 대해 알아보겠습니다. 사용법은 아래와 같습니다.





DECLARE @RESULTS TABLE
 (
  PRJT_CD    VARCHAR(10)
  , PROG_SCH011  MONEY
  , PROG_SCH014  MONEY
 )

 DECLARE @SQL1  NVARCHAR(2000);
 DECLARE @PARM1  NVARCHAR(100) ;
 DECLARE @OUT1  MONEY;

 SET @SQL1 = '
    DECLARE @MAX_SCH011_DATE VARCHAR(10);

    SELECT
     @MAX_SCH011_DATE = MAX(CONVERT(VARCHAR(10), SYS_REG_DT, 120))
    FROM TB_RPRT2500_' + @PRJT_CD + ' A with(nolock)
    WHERE A.PRJT_CD = ''' + @PRJT_CD + '''
     AND RPRT_TYPE = ''' + @RPRT_TYPE + '''
     AND SCH_CD = ''SCH011''
     AND PLAN_TYPE = ''' + @PLAN_TYPE + '''

    SELECT
     @SCH011 = SUM(A.PROG)
    FROM TB_RPRT2500_' + @PRJT_CD + ' A with(nolock)
    WHERE A.PRJT_CD = ''' + @PRJT_CD + '''
     AND RPRT_TYPE = ''' + @RPRT_TYPE + '''
     AND SCH_CD = ''SCH011''
     AND PLAN_TYPE = ''' + @PLAN_TYPE + '''
     AND CONVERT(VARCHAR(10), SYS_REG_DT, 120) = @MAX_SCH011_DATE
'




동적으로 만들어진 쿼리를 아래와 같이 실행하면 끝!

 SET @PARM1 = '@SCH011 MONEY output' -- output 파라메터 선언
 EXEC SP_EXECUTESQL @SQL1, @PARM1, @SCH011 = @OUT1 output

이상으로 MSSQL 동적쿼리 실행 Output 변수에 담기에 대해 알아보았습니다.
오늘도 좋은 하루 되세요~^^

댓글

이 블로그의 인기 게시물

껌 떼는 법 (완벽 제거)

학점 계산기 (백분위 환산) 완벽 정리

[엑셀] 셀에 수식 적용하는 모든 것 완벽 정리