如何在Oracle中输入换行符?

时间:2011-04-28 00:06:10

标签: 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   当前最大最小值之前sql stddev sum variance执行forall merge   时间戳间隔日期管道   

3 个答案:

答案 0 :(得分:110)

Chr(Number)应该适合你。

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

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

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

答案 1 :(得分:1)

根据Oracle PLSQL语言定义,字符文字可以包含“字符集中的任何可打印字符”。 https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/02_funds.htm#2876

@Robert Love的答案是可读代码的最佳实践,但是您也可以在代码中键入换行符。这是一个使用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.

您也可以使用u'\0085'之类的Unicode文字转义序列代替CHR(NN)函数,我更喜欢它,因为众所周知,我们已经不再生活在1970年了。请参见下面的等效示例:

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

PL/SQL procedure successfully completed.

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

  • Microsoft Windows:CR / LF或u'\000D\000A'
  • Unix(包括Apple MacOS):LF或u'\000A'
  • IBM OS390:NEL或u'\0085'
  • HTML:'<BR>'
  • XHTML:'<br />'
  • 等等等

答案 2 :(得分:0)

begin   
   dbms_output.put_line( 'hello' ||chr(13) || chr(10) || 'world' );
end;