我想知道如何将以下代码的输出显示在整齐的列中。现在的输出没有整齐地组织。有什么我需要放在变量前面的吗?
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'));
您正在输出一个字符串,因此没有机会整齐地对齐这些值,因为它们可能在一个简单的选择中。串联 ( ||
) 只是将给出的内容完全结合在一起。
您需要做的就是手动填充字符串:
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.
显示为列 - 这是一种简单的方法。您可以为此使用 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