====== pears.GetPersonAvailPercentage ======
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
===== Original SQL =====
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."GetPersonAvailPercentage" IS
{create function GetPersonAvailPercentage
/* Application Maintained Function / Procedure - DO NOT EDIT*/
(in sid char(20),in frdate date,in todate date)
returns double
begin
declare rv double;
declare bonly smallint;
declare cavail char(1);
declare ndays double;
declare navail double;
set rv=0;
if frdate is null then
return null
end if;
if todate is null then
set todate=dateadd(day,30,frdate)
end if;
if frdate > todate then
return 100
end if;
set ndays=0;
set navail=0;
select first onlymatchifknownavailable into bonly from person where personid = sid;
set bonly=isnull(bonly,0);
while frdate <= todate loop
set ndays=ndays+1;
select first getpersonavailstate(sid,frdate) into cavail;
if cavail = 'A' or(cavail is null and bonly = 0) then
set navail=navail+1
end if;
set frdate=dateadd(day,1,frdate)
end loop;
return(navail/ndays)*100
end
}