¿Cómo introducir un carácter de nueva línea en 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.';

Error (34,33): PLS-00103: Encontró el símbolo"/ " cuando esperaba uno de los siguientes: (- +case mod new null avg count current max min prior sql stddev suma varianza ejecutar forall merge tiempo marca de tiempo intervalo fecha tubo

 46
Author: Mark, 2011-04-28

2 answers

Chr (Number) debería funcionar para usted.

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

Recuerde que las diferentes plataformas esperan diferentes caracteres de línea nueva:

  • CHR (10) = > LF, line feed (unix)
  • CHR (13) = > CR, retorno de carro (ventanas, junto con LF)
 99
Author: Robert Love,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-27 10:41:33

De acuerdo con la definición del lenguaje Oracle PLSQL, un literal de caracteres puede contener "cualquier carácter imprimible en el conjunto de caracteres". https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/02_funds.htm#2876

La respuesta de@Robert Love muestra una buena práctica para el código legible, pero también puede escribir el carácter linefeed en el código. Aquí hay un ejemplo de un terminal Linux usando 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.

En lugar de la función CHR( NN ) también puede usar Secuencias de escape literales Unicode como u'\0085' que prefiero porque, bueno, ya no vivimos en 1970. Vea el ejemplo equivalente a continuación:

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

PL/SQL procedure successfully completed.

Para una cobertura justa, supongo que vale la pena señalar que los diferentes sistemas operativos utilizan diferentes caracteres/secuencias de caracteres para el manejo de final de línea. Tienes que pensar en el contexto en el que se verá o imprimirá la salida de tu programa, para determinar si estás utilizando la opción correcta técnica.

  • Microsoft Windows: CR / LF o u'\000D\000A'
  • Unix (incluyendo Apple macOS): LF o u'\000A'
  • IBM OS390: NEL o u'\0085'
  • HTML: '<BR>'
  • XHTML: '<br />'
  • etc. sucesivamente.
 0
Author: Douglas Held,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-25 10:37:54