Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将PL/SQL中的输出格式化为直列?_Sql_Oracle_Plsql - Fatal编程技术网

如何将PL/SQL中的输出格式化为直列?

如何将PL/SQL中的输出格式化为直列?,sql,oracle,plsql,Sql,Oracle,Plsql,我想知道如何才能将以下代码的输出显示在一个整洁的列中。现在的输出组织得不整齐。我需要在变量前面加上什么吗 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: ' || TO_CHAR(v_pay, '$999G999G999D99'));

您只输出一个字符串,因此没有机会整齐地对齐值,因为它们可以在简单的select中对齐。连接(
|
)只是将给定的内容准确地粘在一起

您只需手动填充字符串:

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
。。。因此,在这种情况下,您需要对其进行
修剪
,以便它只使用您自己的填充

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.

您只输出一个字符串,因此没有机会整齐地对齐值,因为它们可以在简单的select中对齐。连接(
|
)只是将给定的内容准确地粘在一起

您只需手动填充字符串:

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
。。。因此,在这种情况下,您需要对其进行
修剪
,以便它只使用您自己的填充

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

显示为列-这是一种简单的方法。您可以为此使用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

不重复但相关:不重复但相关: