我想退回换行
CALC_LENGTH :=regexp_replace(CALC_LENGTH, '([\x0B|)', ' ');
CALC_LENGTH :=translate(CALC_LENGTH, chr(11), ' ');
使用translate()或regexp总会给我一个新行
示例:
if PR is null then
CALC_LENGTH :=regexp_replace(CALC_LENGTH, '([\x0B|)', ' ');
else
CALC_LENGTH := where var1 >var2;
end if;
BEGIN
select ..... from tab1
'||CALC_LENGTH||'
insert into....
endif;
如果pr为null,即使使用trasnalte或regexp,我也会得到空行结果。
select ..... from tab1
insert into....
我想要输出结果如下:
select ..... from tab1
insert into....
答案 0 :(得分:1)
尝试TRANSLATE功能,过去曾经和我一起工作过很多次。我不确定哪个ASCII将映射到所需的输出,您可以参考下面的块并保留所需的CHR语句:
DECLARE
CALC_LENGTH VARCHAR2(100);
BEGIN
CALC_LENGTH := 'Hi!'||chr(10)||'i'||CHR(11)||'z'||CHR(12)||'y'||chr(13)||'a';
CALC_LENGTH :=regexp_replace(CALC_LENGTH, '[\x0B|]', ' ');
CALC_LENGTH := TRANSLATE(CALC_LENGTH, CHR(10), ' ');
CALC_LENGTH := TRANSLATE(CALC_LENGTH, CHR(11), ' ');
CALC_LENGTH := TRANSLATE(CALC_LENGTH, CHR(12), ' ');
CALC_LENGTH := TRANSLATE(CALC_LENGTH, CHR(13), ' ');
DBMS_OUTPUT.PUT_LINE('select ..... from tab1'||
CALC_LENGTH||
'insert into....');
END;
/