如何在LINUX中的DBMS_OUTPUT.put_line中添加新行字符

时间:2017-04-03 11:07:12

标签: sql linux oracle unix plsql

在UNIX中,在SQL脚本中,我有以下代码:

LOOP    
  DBMS_OUTPUT.put_line (p_key||'|'||p_loc||'\n');    
END LOOP

输出是:

5482004|Dir/3-30-2017/file:47923.xml

5482009|Dir/3-30-2017/file:49288.xml

然而在Linux中,由于“\ n”不起作用,我将使用以下代码替换上述代码:

LOOP    
  DBMS_OUTPUT.put_line (p_key||'|'||p_loc);    
  DBMS_OUTPUT.new_line;    
END LOOP

输出是:

20 5482004|Dir/3-30-2017/file:447923.xml 5482009|Dir/3-30-2017/file:449288.xml 5482010|Dir/3-30-2017/file:449739.xml 5482012|Dir/3-30-2017/file:45015.xml

此格式的输出在每行之后没有新行。请在循环中建议正确的内容。

P.S。我也尝试了DBMS_OUTPUT.put_line (p_key||'|'||p_loc||chr(10)),但输出仍然没有换行。

2 个答案:

答案 0 :(得分:1)

请参阅下面这个问题的答案。

<强> New Line Character in dbms_output

答案 1 :(得分:0)

您可以使用 chr(10) 我试图交换数字的代码,我需要换行,所以我使用了 chr(10)

DECLARE 
    A NUMBER;
    B NUMBER;
    TEMP NUMBER;
BEGIN
    A:=&A;
    B:=&B;
    DBMS_OUTPUT.PUT_LINE(chr(10)||'BEFORE SWAP A is : '||A||' AND B is : '||B);
    TEMP:=B;
    B:=A;
    A:=TEMP;
    DBMS_OUTPUT.PUT_LINE(' AFTER  SWAP A is : '||A||' AND B is : '||B);
END;
/
Output:

Enter value for a: 1
old   6:   A:=&A;
new   6:   A:=1;
Enter value for b: 2
old   7:   B:=&B;
new   7:   B:=2;
                                 -- here i got new line
BEFORE SWAP A is : 1 AND B is : 2
AFTER  SWAP A is : 2 AND B is : 1

PL/SQL procedure successfully completed.

所以在输出行之前(即交换 A 之前是:1 AND B 是:2)我得到了新行。