====== pears.ReplaceStr ====== Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace. ===== Original SQL ===== create function "pears"."ReplaceStr"( /* Application Maintained Function / Procedure - DO NOT EDIT*/ in "mainstring" char(255),in "replacestring" char(255),in "withwhat" char(255),in "times" tinyint ) returns varchar(255) begin // // Variable declarations // declare "newstring" varchar(255); declare "togo" tinyint; declare "beforestring" varchar(255); declare "afterstring" varchar(255); declare "pos" tinyint; declare "lenreplace" tinyint; declare "lennewstring" tinyint; declare "lenwithwhat" tinyint; declare "startpos" tinyint; // // Set initial values // set "lenreplace" = "length"("replacestring"); set "newstring" = "mainstring"; set "lenwithwhat" = "length"("withwhat"); set "pos" = 0; set "startpos" = 1; // Check for null or empty string if "mainstring" is null or "mainstring" = '' then return("mainstring") end if; // Set counter, if not replacing all if "times" <> 0 then set "togo" = "times" end if; // // Loop for replace_text // "replace_text": loop // Find position of (next) occurance set "pos" = "locate"("newstring","replacestring","startpos"); // Check for no (more) occurances if "pos" = 0 then leave "replace_text" end if; // Check for done required number of replacements, if not replacing all if "times" <> 0 then if "togo" = 0 then leave "replace_text" end if end if; set "lennewstring" = "length"("newstring"); // Find text before and after text to be replaced set "beforestring" = "left"("newstring","pos"-1); set "afterstring" = "right"("newstring","lennewstring"-("pos"+"lenreplace"-1)); // Create new string with replaced text set "newstring" = "beforestring" || "withwhat" || "afterstring"; // Set new search starting position set "startpos" = "pos"+"lenwithwhat"; // Decrement number of replacements counter, if not replacing all if "times" <> 0 then set "togo" = "togo"-1 end if end loop "replace_text"; return("newstring") end