오라클 달력으로 프로시저 반복문 처리
개발관련/DB관련(Oracle) :
2023. 3. 21. 19:54
/*VER2 월말기준으로 프로시저 돌리는 달력구문*/
WITH CALENDR AS (
SELECT
'P_HR_D_HR_EMP_YM' AS PGM_NM
, TO_CHAR (FIRST_DAY + LEVEL - 1, 'D') DAYS -- 요일(숫자)
, TO_CHAR (FIRST_DAY + LEVEL - 1, 'MMDD') TODAY -- 해당일자
, TO_CHAR (FIRST_DAY + LEVEL - 1, 'DD') DAY -- 일자
, TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD') TODAY_STR -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')-1, 'YYYYMMDD') AS YESTERDAY_STR -- 해당일자str
, TO_CHAR(FIRST_DAY + LEVEL - 1,'IW') WEEK_NUM -- 주차수
, TO_CHAR(FIRST_DAY + LEVEL - 1,'DY') DAYS_K -- 요일(한글)
FROM (SELECT TRUNC(TO_DATE('20200101'), 'MM') FIRST_DAY FROM DUAL)
WHERE TO_CHAR (FIRST_DAY + LEVEL - 1, 'DD')='01'
CONNECT BY TO_DATE('20200101') + LEVEL + 1 <= TRUNC(LAST_DAY(TO_DATE('20230301', 'YYYYMMDD')))
) SELECT
'CALL '||PGM_NM||'('||chr(39)||TODAY_STR||CHR(39)||', '||CHR(39)||TODAY_STR||CHR(39)||', '||CHR(39)||'M'||CHR(39)||');' AS CALL_PROC_TODAY
, 'CALL '||PGM_NM||'('||chr(39)||YESTERDAY_STR||CHR(39)||', '||CHR(39)||YESTERDAY_STR||CHR(39)||', '||CHR(39)||'M'||CHR(39)||');' AS CALL_PROC_YESTERDAY
FROM CALENDR;
반응형
'개발관련 > DB관련(Oracle)' 카테고리의 다른 글
오라클 숫자변환 오류처리 (0) | 2023.04.20 |
---|---|
특정일자를 기준으로 7일씩 잘라서 n주차를 표시해주는 쿼리 (0) | 2023.03.26 |
오라클 테이블, 컬럼, pk, comment, data type 조회 (0) | 2023.01.14 |
date 타입과 timestamp 타입 조회 (0) | 2022.09.23 |
튜닝 연습 (0) | 2021.10.30 |