====== pears.placementelementvalidV2 ======
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"."placementelementvalidV2" IS
'create function placementelementvalidV2
/* Application Maintained Function / Procedure - DO NOT EDIT*/
(in bvalid smallint,in splacid char(20),in spersid char(20),in svacid char(20),in selementname char(20),in ismanager smallint,in isaccounts smallint)
returns smallint
begin
declare rv smallint;
declare l long varchar;
declare s long varchar;
declare i integer;
declare dt char(1);
declare subname char(30);
declare subchar char(1);
if isaccounts is null then
set isaccounts=0
end if;
if isaccounts <> 0 then
set isaccounts=1
end if;
if ismanager is null then
set ismanager=0
end if;
if ismanager <> 0 then
set ismanager=1
end if;
set l=null;
if bvalid = 1 then
select validationcheck into l from placementelementtype where name = selementname
else
select warningcheck into l from placementelementtype where name = selementname
end if;
if l is null then
return(1)
end if;
subloop: loop
set i=patindex(''%{%}%'',l);
if i = 0 then
leave subloop
end if;
set subname='''';
charloop: loop
set subchar=substr(l,i,1);
if length(l) = 1 then
set l='''' // In this case stuffing crashes the server
else
set l=stuff(l,i,1,'''')
end if;
if subchar = ''}'' or i > length(l) then // The latter is precautionary
leave charloop
elseif subchar <> ''{'' then
set subname=subname || subchar
end if
end loop charloop;
if subname = ''ACCOUNTS'' then
set s=''('' || str(isaccounts) || ''=1)'';
set dt=''B''
elseif subname = ''MANAGER'' then
set s=''('' || str(ismanager) || ''=1)'';
set dt=''B''
else
set s=placementelementvalueV2(splacid,spersid,svacid,subname);
if subname = ''PLACEMENTID'' or subname = ''PERSONID'' or subname = ''VACANCYID'' then
set dt=''S''
else
set dt=null;
select datatype into dt from placementelementtype where name = subname
end if
end if;
if s is null then
set s=''null''
else
set s = replace(s,'''''''', '''''''''''' );
if dt = ''S'' then
set s='''''''' || s || ''''''''
else
if dt <> ''B'' then
set s=''cast('' || s || '' as real)''
end if
end if
end if;
set l=insertstr(i-1,l,s)
end loop subloop;
if l is null or length(l) = 0 then
return(1) // Assume valid
end if;
set rv=null;
set l=''set rv=(select (if ('' || l || '') then 1 else 0 endif) as bexpr)'';
execute immediate l;
return(rv)
end'