如何在 Oracle 中输入换行符?

select col1, col2
into name1, name2
from table1
where col1=col;


m_sub := 'Subject ';
m_msg := 'Hello '||name||' ,'||/n||/n||'Your order has been placed.';

错误(34,33) : PLS-00103: 在期待一个符号时遇到符号“/” 如下所示: (- + case mod new null avg count 对所有合并执行当前最大最小先验 sqlstddev 和方差 时间戳间隔日期管道

280418 次浏览

Chr (数字) 应该对你有用。

select 'Hello' || chr(10) ||' world' from dual

请记住,不同的平台需要不同的新行字符:

  • (10) = > LF,换行(unix)
  • (13) = > CR,回车(窗口,连同 LF)

根据 Oracle PLSQL 语言定义,字符文字可以包含“字符集中的任何可打印字符”

@ Robert Love 的回答展示了可读性代码的最佳实践,但是你也可以在代码中输入 linefeed 字符。下面是一个使用 sqlplus的 Linux 终端的例子:

SQL> set serveroutput on
SQL> begin
2  dbms_output.put_line( 'hello' || chr(10) || 'world' );
3  end;
4  /
hello
world


PL/SQL procedure successfully completed.


SQL> begin
2  dbms_output.put_line( 'hello
3  world' );
4  end;
5  /
hello
world


PL/SQL procedure successfully completed.

你也可以使用 Unicode 字面转义序列,比如我更喜欢的 u'\0085',因为你知道我们已经不再生活在1970年代了。请看下面相应的例子:

SQL> begin
2  dbms_output.put_line( 'hello' || u'\000A' || 'world' );
3  end;
4  /
hello
world


PL/SQL procedure successfully completed.

为了公平起见,我认为值得注意的是,不同的操作系统使用不同的字符/字符序列来处理行尾处理。您必须考虑将要查看或打印程序输出的上下文,以确定是否使用了正确的技术。

  • MicrosoftWindows: CR/LF 或 u'\000D\000A'
  • Unix (包括 Apple MacOS) : LF 或 u'\000A'
  • IBM OS390: NEL 或 u'\0085'
  • HTML: '<BR>'
  • XHTML: '<br />'
  • 等等。
begin
dbms_output.put_line( 'hello' ||chr(13) || chr(10) || 'world' );
end;