IT/MSSQL

프로시저에서 프로시저 실행하여 정보 테이블 생성

밤톨순이 2015. 1. 6. 15:08

자주 쓰지는 않겠지만, 부득이하게 사용해야 할경우가 있다.

동적으로 쿼리가 실행되고 로직안에 로직이 들어가는 경우가 이에 해당한다.(하지만, 정말 특이한경우 아니면 사용을 안한다...;;;)

 

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

-- 프로젝트 조건이 없을 경우 사용자의 모든 프로젝트 정보를 보여 줘야 하기 때문에 LOOP 사용
DECLARE @MAX_PRJT_CNT INT; SELECT @MAX_PRJT_CNT = MAX(NUM) FROM FFN_PCPS_ALL_PRJT(@PRJT_CD, @USER_ID);
DECLARE @MIN_PRJT_CNT INT; SET @MIN_PRJT_CNT = 1;
DECLARE @TARGET_PRJT VARCHAR(10);
WHILE (@MIN_PRJT_CNT <= @MAX_PRJT_CNT)
BEGIN
 SELECT @TARGET_PRJT = PRJT_CD FROM FFN_PCPS_ALL_PRJT(@PRJT_CD, @USER_ID) WHERE NUM = @MIN_PRJT_CNT;
 
 ----------------------------------------------------------------------------------------------------
 -- 테이블이 있는지 검사하여 WSP_PCPS_PREX1000_R1 실행
 ----------------------------------------------------------------------------------------------------
 IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE [name] = 'TB_RPRT2500_' + @TARGET_PRJT)
 BEGIN
  INSERT @RESULTS_PS EXEC WSP_PCPS_PREX1000_R1 @TARGET_PRJT, 'PSSR', 'E'
 END
 
 SET @MIN_PRJT_CNT = @MIN_PRJT_CNT + 1;
END