为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:centOS7.9
【CPU】: R9 5900H
【问题描述】*:
我有一个函数
CREATE OR REPLACE FUNCTION "LIVEBOS"."FUNC_TRIMALL"("I_STR" IN CLOB)
RETURN CLOB
AUTHID DEFINER
IS
V_STR CLOB;
V_STR_LAST CLOB;
BEGIN
V_STR := TRIM(I_STR);
V_STR_LAST := ' ';
WHILE V_STR <> V_STR_LAST LOOP
V_STR_LAST := V_STR;
V_STR := TRIM(V_STR);
V_STR := LTRIM(V_STR, CHR(10));
V_STR := LTRIM(V_STR, CHR(13));
V_STR := RTRIM(V_STR, CHR(10));
V_STR := RTRIM(V_STR, CHR(13));
END LOOP;
RETURN V_STR;
END FUNC_TRIMALL;
理解的是将输入CLOB类型的I_STR的空格,换行,制表符等删去。但是编译时在WHILE V_STR <> V_STR_LAST LOOP这句话报错:
错误号: -6105 数据类型不匹配
有没有大佬帮忙看看
CREATE OR REPLACE FUNCTION "FUNC_TRIMALL"("I_STR" IN CLOB) RETURN CLOB AUTHID DEFINER IS V_STR CLOB; V_STR_LAST CLOB; BEGIN V_STR := TRIM(I_STR); V_STR_LAST := ' '; -- WHILE V_STR <> V_STR_LAST LOOP WHILE text_equal(V_STR, V_STR_LAST) = 0 LOOP V_STR_LAST := V_STR; V_STR := TRIM(V_STR); V_STR := LTRIM(V_STR, CHR(10)); V_STR := LTRIM(V_STR, CHR(13)); V_STR := RTRIM(V_STR, CHR(10)); V_STR := RTRIM(V_STR, CHR(13)); END LOOP; RETURN V_STR; END FUNC_TRIMALL;