다른 DB에서 받아오는 데이터량이 너무 많아서 프로젝트별 테이블을 만들어 놓고 배치로 프로젝트별 정보를 각각의 테이블에 담는다.

이때 어떤 프로젝트인지 알수 없기 때문에 동적으로 select문을 생성하고 동적쿼리를 돌려서 얻은 정보를 변수로 담아 쓰는 로직이다.

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

'IT > MSSQL' 카테고리의 다른 글

배열  (0) 2015.08.13
칼럼 type, description 정보 추출 쿼리  (0) 2015.08.10
에러 처리  (0) 2015.02.13
Cross Apply  (0) 2015.01.06
프로시저에서 프로시저 실행하여 정보 테이블 생성  (0) 2015.01.06

+ Recent posts

다른 DB에서 받아오는 데이터량이 너무 많아서 프로젝트별 테이블을 만들어 놓고 배치로 프로젝트별 정보를 각각의 테이블에 담는다.

이때 어떤 프로젝트인지 알수 없기 때문에 동적으로 select문을 생성하고 동적쿼리를 돌려서 얻은 정보를 변수로 담아 쓰는 로직이다.

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

'IT > MSSQL' 카테고리의 다른 글

배열  (0) 2015.08.13
칼럼 type, description 정보 추출 쿼리  (0) 2015.08.10
에러 처리  (0) 2015.02.13
Cross Apply  (0) 2015.01.06
프로시저에서 프로시저 실행하여 정보 테이블 생성  (0) 2015.01.06

+ Recent posts