====== pears.GetExtraRate ======
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"."GetExtraRate" IS
{create function GetExtraRate
/* Application Maintained Function / Procedure - DO NOT EDIT*/
( in pExtraRateNumber smallint,in pPlacOrVac char(1),in pID char(20),in pBandID char(20),in pEffectiveDate date,in pGrade char(4),in pFilter1 char(4),in pFilter2 char(4),in pFilter3 char(4) )
returns double
begin
-- This function is for providing valid extra rates for reporting purposes handling over-rides, filters, date ranges etc.
declare rv double;
declare sqla long varchar;
declare sqlb long varchar;
declare pDynamic smallint;
set rv = null;
set pGrade = isnull(pGrade,'');
set pFilter1 = isnull(pFilter1,'');
set pFilter2 = isnull(pFilter2,'');
set pFilter3 = isnull(pFilter3,'');
set sqla = string('select first extrarate',pExtraRateNumber,' into rv from tempjobrate');
set sqlb = ' where (startdate is null or startdate <= pEffectiveDate) and ';
set sqlb = sqlb+'(enddate is null or enddate >= pEffectiveDate) and isnull(grade,'''')=pGrade and ';
set sqlb = sqlb+'isnull(filter1,'''')=pFilter1 and isnull(filter2,'''')=pFilter2 and ';
set sqlb = sqlb+'isnull(filter3,'''')=pFilter3 and temppaybandid=pBandID and ';
if pPlacOrVac = 'P' then
execute immediate sqla+sqlb+'placementid=pID';
if rv is not null then
return rv
end if;
select vacancyid into pID from placement where placementid = pID
end if;
execute immediate sqla+sqlb+'vacancyid=pID';
if rv is not null then
return rv
end if;
select t."dynamic",t.tempjobtypeid into pDynamic,pID from vacancy as v key join tempjobtype as t where v.vacancyid = pID;
if pDynamic = 1 then
execute immediate sqla+'master'+sqlb+'tempjobtypeid=pID'
end if;
return rv
end
}