日期:2014-05-17  浏览次数:20890 次

哪位大神帮忙写个function???
计算 是否按时答复,
2个日期 参数,1个 返回值,
参数:一个是 开启日期, 一个是 答复日期,
开启日期 + 3个工作日 ,去掉周六、周日、1月1、5月1、10月1、10月2、10月3 
然后和 答复日期 做比较,
开启日期 + 3个工作日  小于 答复日期  返回"否", 大于 答复日期  返回 "是"

简单点说就是,给你一个任务,让你3个工作日内完成,
如果遇到上面的周末,节假日什么的,就顺延。。。

有什么好的方法吗???
------解决方案--------------------
create or replace function ff_isdafu(in_start in date, in_end in date)
  return varchar2 is
  v_ret   varchar2(10) := '二者相等';
  v_start date;
  v_end   date;
  i       number := 1;
  v_flag  number := 0;
begin

  loop
    if v_flag < 3 then 
      v_start := in_start + i;   
      if to_char(v_start, 'd') not in ('1', '7') and
         to_char(v_start, 'mmdd') not in ('0101', '0501', '1001', '1002', '1003') then
        v_end  := v_start;
        v_flag := v_flag + 1;
      end if;
    else
      exit;
    end if;
    i := i + 1;
  end loop;
  if v_end > in_end then
    v_ret := 'YES';
  elsif v_end < in_end then
    v_ret := 'NO';
  end if;
  return v_ret;
end;