SELECT TO_DATE(LEVEL, 'DDD')
FROM DUAL
CONNECT BY LEVEL<=365
쿼리를 할때 기존 지식 응용도 하고, 찾아도 보면서, 가능하면 한방에 할 수 있도록 노력하자 !
예전에 만들었던 달력데이터 생성 SP는 위의 쿼리에 비해 무식이 흐르는도다
CREATE OR REPLACE PROCEDURE
SP_JEETA_HDAY_YEARDAY_MAKE
(
P_YEAR IN VARCHAR2
)
/**
*************************************
P_YEAR 에 특정년도를 넘기면, 해당 년도의 1년치 날짜를 생성함
*************************************
*/
IS
EXP0 EXCEPTION;
SQL_ERR_CD VARCHAR2(80);
V_FROM DATE := TO_DATE(P_YEAR || '0101','YYYYMMDD');
V_TO DATE := TO_DATE(P_YEAR || '1231','YYYYMMDD');
V_LP_DATE DATE;
V_LP_CHAR VARCHAR2(8);
BEGIN
BEGIN
DELETE FROM HDAY_YEARDAY
WHERE YRDY_YEAR = P_YEAR;
EXCEPTION WHEN OTHERS THEN
RAISE EXP0;
END;
V_LP_DATE := V_FROM;
WHILE V_LP_DATE < V_TO + 1
LOOP
V_LP_CHAR := TO_CHAR(V_LP_DATE, 'YYYYMMDD');
BEGIN
INSERT INTO HDAY_YEARDAY
(
YRDY_YEAR
,YRDY_DATE
,YRDY_CHAR
,OFFX_YSNO
)
VALUES
(
P_YEAR
,V_LP_DATE
,V_LP_CHAR
,CASE
WHEN TO_CHAR(V_LP_DATE, 'D') IN ('1','7')
THEN 1
ELSE 0
END
);
EXCEPTION WHEN OTHERS THEN
RAISE EXP0;
END;
V_LP_DATE := V_LP_DATE + 1;
END LOOP;
COMMIT;
EXCEPTION
WHEN EXP0 THEN
DBMS_OUTPUT.PUT_LINE('SQLCODE : '|| SQLCODE );
DBMS_OUTPUT.PUT_LINE('SQLERRM : '|| SQLERRM );
ROLLBACK;
END;