create or replace function SF_ZS_ComputeGdtjrq(lv_cyrq00 char,lv_day number) --归档提交日期 return number is v_start number(8); v_Return varchar2(50); v_ZWRQ00 varchar2(50); v_count0 number(3); v_count1 number(3); v_index number(3); v_date date; begin -- MODIFICATION HISTORY -- Person Date Comments -- xuxq 2018.11.26 CREATE 计算工作日天数返回日期 -- xuxq 2020.03.19 将v_date改为to_date BAGL-20200305-001 v_start:=0; v_date:=to_date(lv_cyrq00,'yyyy-mm-dd'); v_index:=lv_day; while v_start<=v_index loop --周六、周日全天 为节假日,其他为正常工作日。 select to_char(v_date,'day') into v_ZWRQ00 from dual; select count(1) into v_count0 from BM_TYZD00 where ZDMC00='节假日信息维护' and MC0000=to_char(v_date,'YYYYMMDD') ; select count(1) into v_count1 from BM_TYZD00 where ZDMC00='节假日转工作日信息维护' and MC0000=to_char(v_date,'YYYYMMDD') ; --if (v_count0<=0 or v_start=0 ) and ((v_ZWRQ00 <>'星期日'and v_ZWRQ00 <> '星期六') or v_count1> 0) then -- if(((v_ZWRQ00 <>'星期日'and v_ZWRQ00 <> '星期六') and v_count0=0) or v_start=0 or v_count1> 0) then v_start:= v_start + 1; end if; v_date:= v_date+ 1 ; end loop ; v_date:= v_date- 1 ; v_Return :=to_char(v_date,'YYYYMMDD') ; return v_Return; end;