====== pears.NetQuestionOwnerID ====== 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"."NetQuestionOwnerID" IS {create FUNCTION pears.NetQuestionOwnerID(in pBaseTagLocation char(3), in pBaseID char(20), in pRequiredTagLocation char(3)) returns char(20) DETERMINISTIC // IQXWeb begin declare placid char(20); declare persid char(20); declare vacid char(20); declare empid char(20); declare compid char(20); declare origRequiredLocation char(3); set origRequiredLocation=pRequiredTagLocation; set pBaseTagLocation=left(pBaseTagLocation,1); // Departmental portion can be ignored if pBaseTagLocation='A' then // Both use personid set pBaseTagLocation='P' end if; set pRequiredTagLocation=left(pRequiredTagLocation,1); if pRequiredTagLocation='A' then set pRequiredTagLocation='P' end if; if pBaseTagLocation=pRequiredTagLocation then // Simplest case return isnull(pBaseID,origRequiredLocation) // If pBaseID is null we are interested in whether the tag should be available end if; if pBaseID is null then case pRequiredTagLocation // Return null on any invalid path from Base to Required when 'C' then if locate('EVSLT',pBaseTagLocation)=0 then return null end if; when 'E' then if locate('VSLT',pBaseTagLocation)=0 then return null end if; when 'V' then if locate('SLT',pBaseTagLocation)=0 then return null end if; when 'L' then if locate('T',pBaseTagLocation)=0 then return null end if; when 'P' then if locate('LT',pBaseTagLocation)=0 then return null end if; when 'T' then return null; when 'S' then return null; end case; return origRequiredLocation; // Valid end if; case pBaseTagLocation when 'T' then select t.placementid,t.personid,t.vacancyid,e.employmentid,e.companyid into placid,persid,vacid,empid,compid from tempprovtimesheet t key join vacancy v key join employment e where t.tempprovtimesheetid=pBaseID; if persid is null then select t.placementid,t.personid,v.vacancyid,e.employmentid,e.companyid into placid,persid,vacid,empid,compid from temptimesheet t key left outer join (placement key join vacancy v key join employment e) where t.temptimesheetid=pBaseID; end if; when 'L' then select ep.personid,v.vacancyid,e.employmentid,e.companyid into persid,vacid,empid,compid from placement key join employment ep, placement key join vacancy v key join employment e where placement.placementid=pBaseID; when 'S' then select v.vacancyid,e.employmentid,e.companyid into vacid,empid,compid from tempshiftplan s key join vacancy v key join employment e where s.tempshiftplanid=pBaseID; when 'V' then select e.employmentid,e.companyid into empid,compid from vacancy v key join employment e where v.vacancyid=pBaseID; when 'E' then select e.companyid into compid from employment e where e.employmentid=pBaseID; end case; case pRequiredTagLocation when 'L' then return placid; when 'P' then return persid; when 'V' then return vacid; when 'E' then return empid; when 'C' then return compid; end case; return null; end }