¿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
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)
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.
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