--------------------------------------------------------------------------------
--함 수 명 : GET_BIZ_DT
--작 성 자 : coue
--작 성 일 :
2008.12.11
--내 용 : N일 이후(이전) 영업일
가져오기
--------------------------------------------------------------------------------
--변 경 일 :
--변 경 자 :
--------------------------------------------------------------------------------
CREATE
OR REPLACE FUNCTION COUE.GET_BIZ_DT (
p_day
NUMBER
) RETURN VARCHAR2 IS
v_date VARCHAR2(8);
BEGIN
v_date := '';
--------------------------------------------------------------------------------
IF p_day >= 0
THEN
SELECT TO_CHAR(YMD, 'YYYYMMDD')
AS YMD
INTO v_date
FROM (
SELECT /*+INDEX_ASC(TABLE_NAME TABLE_INDEX_NAME)*/
YMD AS YMD
,ROWNUM - 1 AS RNO
FROM TABLE_NAME
WHERE SDAY_YN
= 'Y' --영업일여부
AND YMD >=
TRUNC(SYSDATE, 'DD')
)
WHERE RNO =
p_day;
--------------------------------------------------------------------------------
ELSE
SELECT TO_CHAR(YMD, 'YYYYMMDD') AS
YMD
INTO v_date
FROM (
SELECT /*+INDEX_DESC(TABLE_NAME TABLE_INDEX_NAME)*/
YMD AS YMD
,ROWNUM AS RNO
FROM TABLE_NAME
WHERE SDAY_YN = 'Y' --영업일여부
AND YMD
< TRUNC(SYSDATE, 'DD')
)
WHERE
RNO = ABS(p_day);
--------------------------------------------------------------------------------
END IF;
--------------------------------------------------------------------------------
RETURN v_date;
--------------------------------------------------------------------------------
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN '';
WHEN OTHERS THEN
RETURN '';
END GET_BIZ_DT;
* 어느 프로젝트에 투입되어도
반드시 존재하여야 하는 영업일 구하기.
* Ex> 3일 후 영업일
구하기
SELECT GET_BIZ_DT(3) FROM DAUL
* Ex> 3일 전 영업일 구하기
SELECT
GET_BIZ_DT(-3) FROM DAUL



