【发布时间】:2011-02-04 18:48:37
【问题描述】:
我正在尝试右对齐某些 PL/SQL 代码的输出,但 dbms_output.put_line 正在从我的字符串中修剪前导空格。我如何让它停止?或者有没有更好的方法来输出带有前导空格的字符串?
dbms_output.put_line(lpad('string', 30, ' '));
输出:
string
代替:
string
【问题讨论】:
我正在尝试右对齐某些 PL/SQL 代码的输出,但 dbms_output.put_line 正在从我的字符串中修剪前导空格。我如何让它停止?或者有没有更好的方法来输出带有前导空格的字符串?
dbms_output.put_line(lpad('string', 30, ' '));
输出:
string
代替:
string
【问题讨论】:
问题不在于dbms_output,而在于 SQL*Plus。
使用
SET SERVEROUTPUT ON FORMAT WRAPPED
或
SET SERVEROUTPUT ON FORMAT TRUNCATED
保留空格。
来自SET SERVEROUT WORD_WRAPPED 的documentation (PDF)(这是标准):
SQL*Plus 左对齐每一行,跳过所有前导空格。
【讨论】:
如果您想保留前导空格但修剪尾随空格,可以添加:
set trimspool on
这样会保留前导空格,但行长将由输出中文本的实际长度决定。
【讨论】: