2010-09-06 162 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