Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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

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
Sql 在Oracle中生成报告?_Sql_Oracle - Fatal编程技术网

Sql 在Oracle中生成报告?

Sql 在Oracle中生成报告?,sql,oracle,Sql,Oracle,我正在尝试使用Oracle生成报告,但遇到一些对齐问题。是否有方法在特定列中打印值?我正在努力实现以下目标: --------------------------------------------------------- ColA ColB ColC ----- --------- --------- 1 2 1 2 4 2 3 3

我正在尝试使用Oracle生成报告,但遇到一些对齐问题。是否有方法在特定列中打印值?我正在努力实现以下目标:

---------------------------------------------------------
ColA        ColB        ColC
-----     ---------   ---------
1            2           1
2            4           2
3            3           1
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;
/
目前,我有一些困难。我正在编写以下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;
/

我手动输入了8个空格,所以我的输出被完全弄乱了。有没有更好的方式格式化输出?

没关系。。我想它是在兜售。。。以防其他人正在寻找答案,使用RPAD可以满足我的需求。例如,我可以使用以下方法很好地格式化它:

---------------------------------------------------------
ColA        ColB        ColC
-----     ---------   ---------
1            2           1
2            4           2
3            3           1
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;
/

您也可以使用
rpad('-',50'-')
作为您的行。有时声明一个varchar变量,用文本字符串填充它,然后只执行
dbms\u输出@现在就到这里来:+1:)我会记住的。非常感谢。