본문 바로가기
프로그래밍 언어/쿼리문 + Oracle + MySQL

[쿼리문/오라클] 토드(Toad)에서 바로 실행가능한 변수선언 쿼리문

by 우림 2016. 2. 5.

변수를 선언해서 쿼리를 실행해야 할 경우가 있는데요.

반복적인 작업을 완료하고 select를 한다던지...

여러가지 경우가 있을 텐데요.


DECLARE

   변수선언

BEGIN

   실행구문

END;


이런식으로 DECLARE BEGIN ~ END 구문으로 프로그래밍을 하여 결과를 확인할 수 있습니다.

아래 샘플을 참고하시면 됩니다.

 

DECLARE

    V_NUM         INTEGER := 0;
    V_TARGET_DATE DATE;

BEGIN
        
        
        LOOP
                V_TARGET_DATE := SYSDATE - V_NUM;
        
        
                DELETE FROM USE_STATUS_DAY
                WHERE CREATE_DATE >= TO_DATE(TO_CHAR(SYSDATE - V_NUM, 'YYYYMMDD'))
                  AND CREATE_DATE < TO_DATE(TO_CHAR(SYSDATE - V_NUM + 1, 'YYYYMMDD'))
                ;

                /* 날짜별배분율INSERT */
                INSERT INTO USE_STATUS_DAY
                (
                    USER_ID,
                    PJT_COUNT,
                    YMD,
                    CREATE_DATE
                )
                WITH LIST AS 
                (
                    SELECT M.USER_ID,
                           M.PJT_ID
                      FROM USE_STATUS S,
                           PJT_MEMBER M,
                           PJT P,
                           USER U
                     WHERE S.USERID = U.DISPLAY_UID
                       AND M.PJT_ID = P.ID
                       AND M.USER_ID = U.USER_ID(+)
                       AND S.USEDATE >= TO_DATE(TO_CHAR(V_TARGET_DATE, 'YYYYMMDD'))
                       AND S.USEdATE <  TO_DATE(TO_CHAR(V_TARGET_DATE + 1, 'YYYYMMDD'))
                     GROUP BY M.USER_ID,
                              M.PJT_ID
                )
                SELECT USER_ID,
                       COUNT(*) PJT_COUNT,
                       TO_CHAR(V_TARGET_DATE, 'YYYYMMDD'),
                       SYSDATE
                  FROM LIST
                 GROUP BY USER_ID
                ;
               
               COMMIT;
               
               V_NUM := V_NUM + 1;
               
            EXIT WHEN V_NUM > 300;
        END LOOP;
                       
END;


이렇게하면 따로 저장프로시저나 함수를 만들어 사용하지 않아도

Toad에서 F9 버튼으로 직접 실행 가능합니다.



댓글