【发布时间】:2017-09-23 09:08:32
【问题描述】:
我需要将日期列表传递给数据库函数,并比较所选日期是否属于正在传递的这些假期的列表。我的数据库功能目前如下。需要将动态假期列表作为输入参数传递给此函数,并检查 START_DATE 是否也在该假期列表中。
create or replace
FUNCTION getWorkingDays (DATE_ONE DATE, DATE_TWO DATE) RETURN NUMBER
IS
DAY_COUNT NUMBER := 0;
START_DATE DATE;
END_DATE DATE;
BEGIN -- loop through and update
IF(DATE_ONE is not null and DATE_TWO is not null)
THEN
IF DATE_ONE < DATE_TWO THEN
START_DATE := DATE_ONE;
END_DATE := DATE_TWO;
ELSE
START_DATE := DATE_TWO;
END_DATE := DATE_ONE;
END IF;
WHILE START_DATE < END_DATE
LOOP
IF TO_CHAR(START_DATE,'DY') NOT IN ('SAT','SUN') THEN
DAY_COUNT := DAY_COUNT + 1;
END IF;
START_DATE := START_DATE + 1;
END LOOP;
END IF;
RETURN DAY_COUNT;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END getWorkingDays;
【问题讨论】:
-
那么,问题是什么?
-
如何将日期列表作为输入参数传递给 DB 函数以及如何比较开始日期是否在函数内的该日期内?
-
查看this question 了解您问题的第一部分。问题的第二部分是算法开发,这超出了 SO 问题的范围。