====== pears.ComplianceScore ======
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"."ComplianceScore" IS
{create function ComplianceScore
/* Application Maintained Function / Procedure - DO NOT EDIT*/
( in "pPersonID" char(20),in "pVacancyID" char(20) default null )
returns double
begin
declare "act" double;
declare "poss" double;
declare "pComplianceDomainID" char(20);
declare pClientCode char(12);
declare "pDate" date;
declare "pDeptID" char(2);
set "act" = 0;
set "poss" = 0;
if "pVacancyID" is not null then
select v."ComplianceDomainID",v."StartDate",v."DepartmentID",c.TempComplianceCode into "pComplianceDomainID","pDate","pDeptID",pClientCode from vacancy v key join employment join company c where v."vacancyid" = "pVacancyID";
if "pComplianceDomainID" is null then
select first "ComplianceDomainID" into "pComplianceDomainID" from "ComplianceDomain" where "DepartmentID" = "pDeptID" and "Name" like 'Default%'
and (ClientTempComplianceCode is null or ClientTempComplianceCode=pClientCode)
order by ClientTempComplianceCode desc, Name asc
end if;
if "pComplianceDomainID" is null then
return 0
end if
end if;
for "PFOR" as "PCUR" no scroll cursor for
select "AchievedScore","Score"
from "ComplianceTable"("pPersonID","pComplianceDomainID","pDate",pClientCode) for read only do
set "act" = "act"+"isnull"("AchievedScore",0.0);
set "poss" = "poss"+"isnull"("Score",0.0)
end for;
if "poss" <= 0 then
return 0
else
return("act"/"poss")*100.0
end if
end
}