====== pears.NetLongQuestAnswer ======
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
===== Original SQL =====
create function "pears"."NetLongQuestAnswer"(
in "ptagloc" char(3),in "ptagid" char(3),in "parentid" char(20) )
returns long varchar
begin
declare "rv" long varchar;
declare "tagval" double;
declare "textval" long varchar;
declare "x" char(4);
declare "y" integer;
declare "xunits" char(11);
declare "xdesc" char(25);
declare "i" smallint;
declare "xtagtype" char(1);
set "rv" = '';
select "tagtype","trim"("isnull"("units",'')) into "xtagtype","xunits" from "tag" where "taglocation" = "ptagloc" and "tagid" = "ptagid";
if "xunits" <> '' then
set "xunits" = ' '+"xunits"
end if;
case "xtagtype" when 'N' then
select "max"("value") into "tagval" from "tagvalue" where "taglocation" = "ptagloc" and "id" = "parentid" and "tagid" = "ptagid";
if "isnull"("tagval",0) <> 0 then
set "rv" = "rv"+"string"("tagval")+"xunits"
end if when 'D' then
select "max"("value") into "tagval" from "tagvalue" where "taglocation" = "ptagloc" and "id" = "parentid" and "tagid" = "ptagid";
if "isnull"("tagval",0) <> 0 then
set "y" = "tagval"; //// Following expression does not behave with a double
set "rv" = "rv" || "dateformat"("date"('1899-12-30')+"y",'dd/mm/yyyy')
end if when 'T' then
select first "textvalue" into "textval" from "tagvalue" where "taglocation" = "ptagloc" and "id" = "parentid" and "tagid" = "ptagid";
if "textval" is not null then
set "rv" = "rv"+"textval"
end if when 'U' then
select first "textvalue" into "textval" from "tagvalue" where "taglocation" = "ptagloc" and "id" = "parentid" and "tagid" = "ptagid";
if "textval" is not null then
set "rv" = "rv"+"textval"
end if when 'M' then
select first "tagchoiceid" into "x" from "tagvalue" where "taglocation" = "ptagloc" and "id" = "parentid" and "tagid" = "ptagid";
if "x" is null then
set "x" = '_'
end if;
set "rv" = "rv"+"isnull"((select "isnull"("longdescription","description") from "tagchoice" where "taglocation" = "ptagloc" and "tagid" = "ptagid" and "tagchoiceid" = "x"),'')
else
set "i" = 0;
for "fetch2for" as "fetch2cursor" no scroll cursor for
select "isnull"("tagchoice"."longdescription","tagchoice"."description") as "tagchdesc","tagvalue"."tagchoiceid","tagvalue"."value" as "tgval","tagchoice"."tagchoiceparentid" as "tcpid"
from "tagvalue" key join "tagchoice"
where "tagvalue"."taglocation" = "ptagloc" and "tagvalue"."tagid" = "ptagid" and "tagvalue"."id" = "parentid" order by "tagchoice"."sortorder" asc for read only do
if "i" > 0 then
set "rv" = "rv"+', '
end if;
case "xtagtype" when 'L' then
set "rv" = "rv"+"tagchdesc";
if "tagchoiceid" = '*' then
set "rv" = "rv"+' '+"string"("tgval")
end if when 'S' then
set "rv" = "rv"+"tagchdesc"+' '+"string"("tgval")+"xunits" when 'G' then
select first "isnull"("longdescription","description") into "xdesc" from "tagchoice" where "taglocation" = "ptagloc" and "tagid" = "ptagid" and "value" = "tgval" and "subchoice" = 1;
if "isnull"("xdesc",'') <> '' then
set "rv" = "rv"+"tagchdesc"+' '+"xdesc"
end if when 'Q' then
select first "isnull"("longdescription","description") into "xdesc" from "tagchoice" where "taglocation" = "ptagloc" and "tagid" = "ptagid" and "tagchoiceid" = "tcpid" and "subchoice" = 0;
if "isnull"("xdesc",'') <> '' then
set "rv" = "rv"+"xdesc"+' '+"tagchdesc"
end if
end case;
set "i" = "i"+1
end for
end case;
return("rv")
end /* DOC
2017-06-09 PC Test and doc
*/
/* TEST
call NetTestSetup('');
update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.client','test.agency','test.candidate','test.owner');
update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.client';
update tag set longdescription='LongDescription' where taglocation='P' and tagid='~~~';
insert into tagchoice (taglocation,tagid,tagchoiceid,description,longdescription) on existing skip values ('P','~~~','A','testtag','LongTest');
delete from tagvalue where tagid='~~~' and id='TEST';
insert into tagvalue (taglocation,tagid,tagchoiceid,id,value) values ( 'P','~~~','A','TEST',99);
select NetLongQuestAnswer('P','~~~','TEST') as A from dummy;
expect A=08/04/1900;
*/