create or replace function MY_LOSTDAY(
t_taskid in varchar2)
return varchar2 as
Result varchar2(5);
finish varchar2(5); --标识预警,黄牌,红牌
t_taskreducedate date;
--查询正在进行中的阶段的时间
cursor cur_enddate is
select r.enddate
from t_business_task_reduce r, t_business_task t
where r.taskid = t.id
and t.id=t_taskid
and r.isfinishstate='1';
begin
finish:=0;
open cur_enddate; --打开游标
loop
fetch cur_enddate --遍历
into t_taskreducedate;
exit when cur_enddate%notfound; --当游标为空跳出
--当前时间没有阶段结束的
if(trunc(sysdate-t_taskreducedate)<=0) then
if finish!=0 then
finish:=finish;
end if;
if finish=0 then
finish:=0;
end if;
end if;
--预警
if(trunc(sysdate-t_taskreducedate)>0) and (trunc(sysdate-t_taskreducedate)<=3) then
if finish>=2 then
finish:=finish;
end if;
if finish<2 then
finish := 1;
end if;
end if;
--黄牌
if(trunc(sysdate-t_taskreducedate)>3) and (trunc(sysdate-t_taskreducedate)<=8) then
if finish>=3 then
finish:=finish;
end if;
if finish<3 then
finish := 2;
end if;
end if;
--红牌
if(trunc(sysdate-t_taskreducedate)>8) then
finish := 3;
end if;
end loop;
close cur_enddate; --关闭游标
Result:=finish;
return(Result);
end MY_LOSTDAY;