2010-09-06 183 views
0

我想使用Oracle生成報告,但我有一些對齊問題。有沒有辦法在特定列中打印值?我試圖達到以下目的:在Oracle中生成報告?

--------------------------------------------------------- 
ColA  ColB  ColC 
-----  --------- --------- 
1   2   1 
2   4   2 
3   3   1 

目前,我有一些困難。我正在寫下面的PL/SQL命令:

DECLARE 

BEGIN 
    DBMS_OUTPUT.PUT_LINE('-'); 
    DBMS_OUTPUT.PUT_LINE('----------------------------------------------------------------------------------------------------------------'); 
    DBMS_OUTPUT.PUT_LINE('ColA  ColB  ColC'); 
    DBMS_OUTPUT.PUT_LINE('-----------  ------------  -------'); 
    FOR record IN (SELECT * FROM TABLEA) LOOP 
     DBMS_OUTPUT.PUT_LINE(record.ID || '  ' || record.TAG || '  ' || record.TIP); 
    END LOOP; 
END; 
/

我手動放入八個空格,所以我的輸出完全搞砸了。有沒有更好的方式來格式化輸出?

回答

1

沒關係..我認爲它吹捧......以防其他人正在尋找答案,使用RPAD給我我想要的。舉例來說,我可以很好地使用以下格式它:

DECLARE 

BEGIN 
    DBMS_OUTPUT.PUT_LINE('-'); 
    DBMS_OUTPUT.PUT_LINE(RPAD('-', 50, '-'); 
    DBMS_OUTPUT.PUT_LINE(RPAD('ColA', 20) || RPAD('ColB', 20) || RPAD('ColC', 20)); 
    DBMS_OUTPUT.PUT_LINE('-----------  ------------  -------'); 
    FOR record IN (SELECT * FROM TABLEA) LOOP 
     DBMS_OUTPUT.PUT_LINE(RPAD(record.ID, 20) || RPAD(record.TAG, 20) || RPAD(record.TIP, 20)); 
    END LOOP; 
END; 
/
+1

你也可以使用'RPAD( ' - ',50 ' - '),'現在你的線條 – 2010-09-06 16:59:37

+0

@be這裏:哦.. +1爲此......謝謝:)我會修改我的答案... – Legend 2010-09-06 17:09:20

+1

它有時也更漂亮,以聲明一個varchar變量,填充它與您的文本字符串,然後只是執行'dbms_output.put_line(s_report_string);' – 2010-09-06 17:18:26