我想知道如何将以下代码的输出显示在一个整齐的列中。现在的输出并不整齐。我需要在变量前面放一些东西吗?
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || (v_name));
DBMS_OUTPUT.PUT_LINE('Job: ' || (v_job));
DBMS_OUTPUT.PUT_LINE('Total Pay: ' || TO_CHAR(v_pay, '$999G999G999D99'));
答案 0 :(得分:4)
您输出的是一个字符串,因此没有机会让值整齐排列,因为它们可以在一个简单的选择中。连接(||
)恰好将它所给出的内容完全结合在一起。
您需要做的就是手动填充字符串:
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || (v_name));
DBMS_OUTPUT.PUT_LINE('Job: ' || (v_job));
DBMS_OUTPUT.PUT_LINE('Total Pay: ' || TRIM(TO_CHAR(v_pay, '$999G999G999D99')));
数字列的to_char
使其左边填充(右对齐)到格式掩码的宽度:
SQL> select TO_CHAR(4.97,'$999G999G999D99') from dual;
TO_CHAR(4.97,'$9
----------------
$4.97
...所以在这种情况下你需要一个trim
左右,所以它只使用你自己的填充。
DECLARE
v_name varchar2(30) := 'Joe Bloggs';
v_job varchar2(20) := 'Contractor';
v_pay number := 52657.3;
BEGIN
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name);
DBMS_OUTPUT.PUT_LINE('Job: ' || v_job);
DBMS_OUTPUT.PUT_LINE('Total Pay: '
|| TRIM(TO_CHAR(v_pay, '$999G999G999D99')));
END;
/
Employee Name: Joe Bloggs
Job: Contractor
Total Pay: $52,657.30
PL/SQL procedure successfully completed.
答案 1 :(得分:2)
显示为列 - 这是一种简单的方法。你可以使用Rpad(),Lpad(),我想这会更高级:
DECLARE
v_name varchar2(30) := 'Joe Bloggs';
v_job varchar2(20) := 'Contractor';
v_pay number := 52657.3;
BEGIN
DBMS_OUTPUT.PUT_LINE('Employee Name'||chr(9)||chr(9)||chr(9)||'Job'||chr(9)||chr(9)||chr(9)||chr(9)||chr(9)||'Total Pay');
DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------');
DBMS_OUTPUT.PUT_LINE(v_name||chr(9)||chr(9)||chr(9)||chr(9)||chr(9)||v_job||chr(9)||chr(9)||TRIM(TO_CHAR(v_pay, '$999G999G999D99')));
END;
/
Employee Name Job Total Pay
--------------------------------------------------------
Joe Bloggs Contractor $52,657.30