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

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

 

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

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

배열  (0) 2015.08.13
칼럼 type, description 정보 추출 쿼리  (0) 2015.08.10
에러 처리  (0) 2015.02.13
Cross Apply  (0) 2015.01.06
동적쿼리 실행 out 변수에 담기  (0) 2015.01.06

+ Recent posts

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

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

 

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

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

배열  (0) 2015.08.13
칼럼 type, description 정보 추출 쿼리  (0) 2015.08.10
에러 처리  (0) 2015.02.13
Cross Apply  (0) 2015.01.06
동적쿼리 실행 out 변수에 담기  (0) 2015.01.06

+ Recent posts