====== pears.GetQuestGroup ======
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
===== Original SQL =====
create function "pears"."GetQuestGroup"(
/* Application Maintained Function / Procedure - DO NOT EDIT*/
in "stagloc" char(3),in "stagid" char(10),in "sparentid" char(20) )
returns long varchar
begin
declare "rv" long varchar;
declare "prevtag" char(3);
declare "multidesc" long varchar;
declare "comma" char(2);
declare "staggroup" char(10);
declare "QUESTGROUPMARKER" char(1);
set "QUESTGROUPMARKER" = "char"(127);
set "rv" = '';
set "staggroup" = '%';
set "stagid" = "trim"("isnull"("stagid",''));
if "left"("stagid",1) = '*' then
set "staggroup" = "trim"("right"("stagid","length"("stagid")-1));
set "stagid" = '%';
if "staggroup" = '' then
set "staggroup" = '[^-]%'
end if end if;
set "prevtag" = '';
set "multidesc" = '';
for "fetchfor" as "fetchcursor" no scroll cursor for
select "tagchoice"."tagchoiceparentid","tagvalue"."tagid","tagvalue"."tagchoiceid","tagvalue"."value","tagchoice"."description","tag"."tagtype",(if "trim"("isnull"("tag"."units",'')) <> '' then ' '+"tag"."units" else '' endif) as "units",
(if "tag"."tagtype" = 'G' then
(select first "description" from "tagchoice" as "s" where "tagvalue"."value" = "s"."value" and "tagvalue"."taglocation" = "s"."taglocation" and "tagvalue"."tagid" = "s"."tagid" and "s"."subchoice" = 1)
else
if "tag"."tagtype" = 'Q' then
(select first "description" from "tagchoice" as "s"
where "tagvalue"."taglocation" = "s"."taglocation" and "tagvalue"."tagid" = "s"."tagid"
and "s"."tagchoiceid" = any(select "tagchoiceparentid" from "tagchoice" as "C"
where "tagvalue"."taglocation" = "C"."taglocation" and "tagvalue"."tagid" = "C"."tagid" and "C"."tagchoiceid" = "tagvalue"."tagchoiceid"))
else null
endif
endif) as "subchoicedescription" from "tagvalue" key join("tag","tagchoice") where "tag"."tagtype" like '[LGSQ]'
and "tagvalue"."taglocation" = "stagloc" and "tagvalue"."id" = "sparentid" and "tagvalue"."tagid" like "stagid" and "string"("tag"."displaygroup",'') like "staggroup"
order by "tag"."sortorder" asc,"tag"."tagid" asc,"tagchoice"."sortorder" asc for read only do
if "tagid" <> "prevtag" then
if "multidesc" <> '' then
set "rv" = "string"("rv","QUESTGROUPMARKER","prevtag",'DESCRIP',"QUESTGROUPMARKER","multidesc")
end if;
set "rv" = "string"("rv","QUESTGROUPMARKER","tagid","QUESTGROUPMARKER");
set "prevtag" = "tagid";
set "multidesc" = '';
set "comma" = ''
end if;
if "tagtype" <> 'Q' then
set "rv" = "string"("rv","tagchoiceid","char"(9),"value","char"(13),"char"(10));
set "multidesc" = "string"("multidesc","comma","description")
else
set "rv" = "string"("rv","tagchoiceparentid","char"(9),"tagchoiceid","char"(13),"char"(10));
set "multidesc" = "string"("multidesc","comma","subchoicedescription")
end if;
set "comma" = ', ';
case "tagtype" when 'G' then
set "multidesc" = "string"("multidesc",' ',"subchoicedescription") when 'Q' then
set "multidesc" = "string"("multidesc",' ',"description") when 'S' then
set "multidesc" = "string"("multidesc",' ',"value","units") when 'L' then
if "tagchoiceid" = '*' then
set "multidesc" = "string"("multidesc",' ',"value")
end if
end case end for;
if "multidesc" <> '' then
set "rv" = "string"("rv","QUESTGROUPMARKER","prevtag",'DESCRIP',"QUESTGROUPMARKER","multidesc")
end if;
return "rv"
end