2011-01-21 50 views
6

我想知道是否有任何技巧讓trimspool只修整右側的尾部空白。Oracle trimspool only trailing blanks(not leading blanks)

我有代碼使用dbms_output.put_line打印到控制檯,並且輸出通常具有縮進以使其更易於用眼睛掃描。我將線寬設置得相當大,以便使一些輸出更易於閱讀,所以我還設置了trimspool以消除額外的空白區域。唯一的問題是,現在領先的空間被刪除以及尾隨的空白。有沒有辦法來解決這個問題?我可以在某些輸出語句中添加一個前導(在前導空格之前)「.」字符,但我不允許修改大多數包中的代碼。


這裏就是它沒有trimmimg輸出:

 
level 1       (EOL) 
    level 2      (EOL) 
     Some data     (EOL) 

下面是它目前正與trimspool上輸出:

 
level 1(EOL) 
level 2(EOL) 
Some data(EOL) 

這是我想要的東西:

 
level 1(EOL) 
    level 2(EOL) 
     Some data(EOL) 
+2

+1,處理SQL * Plus中的空白輸出是我持續混淆的來源。 – DCookie 2011-01-21 17:00:02

回答

8

我猜你是在船尾呃

set serveroutput on size 100000 format wrapped 

如果我明白你的問題。

如果我這樣做:

set serveroutput on size 1000000 

begin 
    dbms_output.put_line('no indent'); 
    dbms_output.put_line(' indent'); 
end; 
/

SQL * Plus的輸出:

no indent 
indent 

但是,如果我做

set serveroutput on size 1000000 format truncated 

begin 
    dbms_output.put_line('no indent'); 
    dbms_output.put_line(' indent'); 
end; 
/

SQL * Plus的輸出:

no indent 
    indent 

您必須set trimspool on才能消除高達eol的空間。

+0

`set serveroutput on size 100000 format wrapped`恢復左側的空白,但現在右側有很多空白(文件大小几乎翻倍)。 `set serveroutput on size 1000000 format truncated`截斷了一些輸出行(不好)。 – FrustratedWithFormsDesigner 2011-01-21 16:17:18