How to enter newline character in Oracle?

前端 未结 3 577
無奈伤痛
無奈伤痛 2020-12-04 16:27
select col1, col2
    into name1, name2
    from table1
    where col1=col;

        m_sub := \'Subject \';
    m_msg := \'Hello \'||name||\' ,\'||/n||/n||\'Your ord         


        
相关标签:
3条回答
  • 2020-12-04 16:45
    begin   
       dbms_output.put_line( 'hello' ||chr(13) || chr(10) || 'world' );
    end;
    
    0 讨论(0)
  • 2020-12-04 16:54

    Chr(Number) should work for you.

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

    Remember different platforms expect different new line characters:

    • CHR(10) => LF, line feed (unix)
    • CHR(13) => CR, carriage return (windows, together with LF)
    0 讨论(0)
  • 2020-12-04 17:09

    According to the Oracle PLSQL language definition, a character literal can contain "any printable character in the character set". https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/02_funds.htm#2876

    @Robert Love's answer exhibits a best practice for readable code, but you can also just type in the linefeed character into the code. Here is an example from a Linux terminal using sqlplus:

    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.
    

    Instead of the CHR( NN ) function you can also use Unicode literal escape sequences like u'\0085' which I prefer because, well you know we are not living in 1970 anymore. See the equivalent example below:

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

    For fair coverage I guess it is worth noting that different operating systems use different characters/character sequences for end of line handling. You've got to have a think about the context in which your program output is going to be viewed or printed, in order to determine whether you are using the right technique.

    • Microsoft Windows: CR/LF or u'\000D\000A'
    • Unix (including Apple MacOS): LF or u'\000A'
    • IBM OS390: NEL or u'\0085'
    • HTML: '<BR>'
    • XHTML: '<br />'
    • etc. etc.
    0 讨论(0)
提交回复
热议问题