CREATE OR REPLACE FUNCTION GET_ADDWORKDATE(IN_DATE IN DATE,
ADD_DAY IN NUMBER) RETURN DATE IS
GET_DATE DATE; --返回N个工作日后的日期
XXR_NUMB NUMBER; --休息日天数
FORWARD_XXR_NUMB NUMBER; --前一个休息日的值
/* 该函数作用:输入开始日期,工作日N,计算N个工作日后的日期
*/
BEGIN
GET_DATE := IN_DATE + ADD_DAY; --初始化N个工作日后的日期
FORWARD_XXR_NUMB := 0; --初始化值
LOOP
SELECT COUNT(1)
INTO XXR_NUMB
FROM HOLIDAY_TABLE --节假日维护表
WHERE RQ >= IN_DATE
AND RQ < GET_DATE;
IF XXR_NUMB - FORWARD_XXR_NUMB = 0 THEN
GET_DATE := GET_DATE;
RETURN GET_DATE;
COMMIT;
ELSE
GET_DATE := GET_DATE + XXR_NUMB;
FORWARD_XXR_NUMB := XXR_NUMB;
END IF;
END LOOP;
END GET_ADDWORKDATE;
测试sql语句:sel