pears.GetQuestLongWebText

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"."GetQuestLongWebText" IS 
{CREATE FUNCTION pears."GetQuestLongWebText"( IN "tagloc" CHAR(3),IN "wildtagid" 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 "tab" CHAR(1);
  DECLARE "newline" CHAR(2);
  SET "tab" = "char"(9);
  SET "newline" = "char"(13)+"char"(10);
  SET "rv" = '';
  FOR "fetchfor" AS "fetchcursor" no scroll cursor FOR
    SELECT "tagid" AS "toptagid","longdescription","tagtype","units" FROM "tag" WHERE "taglocation" = "tagloc" AND "tagid" LIKE "wildtagid" ORDER BY "sortorder" ASC FOR READ ONLY do
    SET "xunits" = "isnull"("units",'');
    IF "xunits" <> '' THEN
      SET "xunits" = ' '+"xunits"
    END IF;
    SET "rv" = "rv"+"longdescription"+"tab";
    CASE "tagtype"
    WHEN 'N' THEN SELECT "max"("value") INTO "tagval" FROM "tagvalue" WHERE "taglocation" = "tagloc" AND "id" = "parentid" AND "tagid" = "toptagid";
      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" = "tagloc" AND "id" = "parentid" AND "tagid" = "toptagid";
      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" = "tagloc" AND "id" = "parentid" AND "tagid" = "toptagid";
      IF "textval" IS NOT NULL THEN
        SET "rv" = "rv"+"textval"
      END IF WHEN 'U' THEN SELECT FIRST("textvalue") INTO "textval" FROM "tagvalue" WHERE "taglocation" = "tagloc" AND "id" = "parentid" AND "tagid" = "toptagid";
      IF "textval" IS NOT NULL THEN
        SET "rv" = "rv"+"textval"
      END IF WHEN 'M' THEN SELECT "max"("tagchoiceid") INTO "x" FROM "tagvalue" WHERE "taglocation" = "tagloc" AND "id" = "parentid" AND "tagid" = "toptagid";
      IF "x" IS NULL THEN
        SET "x" = '_'
      END IF;
      SET "rv" = "rv"+"isnull"((SELECT "description" FROM "tagchoice" WHERE "taglocation" = "tagloc" AND "tagid" = "toptagid" AND "tagchoiceid" = "x"),'')
    ELSE
      SET "i" = 0;
      FOR "fetch2for" AS "fetch2cursor" no scroll cursor FOR
        SELECT "tagchoice"."description" AS "tagchdesc","tagvalue"."tagchoiceid","tagvalue"."value" AS "tgval" FROM "tagvalue"
            KEY JOIN "tagchoice" WHERE "tagvalue"."taglocation" = "tagloc" AND "tagvalue"."tagid" = "toptagid" AND "tagvalue"."id" = "parentid" ORDER BY "tagchoice"."sortorder" ASC FOR READ ONLY do
        IF "i" > 0 THEN
          SET "rv" = "rv"+', '
        END IF;
        SET "rv" = "rv"+"tagchdesc";
        CASE "tagtype"
        WHEN 'L' THEN IF "tagchoiceid" = '*' THEN
            SET "rv" = "rv"+' '+"string"("tgval")
          END IF WHEN 'S' THEN SET "rv" = "rv"+' '+"string"("tgval")+"xunits"
        WHEN 'G' THEN SELECT "max"("description") INTO "xdesc" FROM "tagchoice" WHERE "taglocation" = "tagloc" AND "tagid" = "toptagid" AND "value" = "tgval" AND "subchoice" = 1;
          IF "isnull"("xdesc",'') <> '' THEN
            SET "rv" = "rv"+' '+"xdesc"
          END IF
        END CASE;
        SET "i" = "i"+1
      END FOR
    END CASE;
    SET "rv" = "rv"+"newline" END FOR;
  RETURN("rv")
END
}