Как ввести символ новой строки в 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 сумма дисперсии выполнить forall слияние временная метка интервал дата труба

2 ответов


Chr (Номер) должно работать для вас.

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

помните, что разные платформы ожидают разные символы новой строки:

  • CHR (10) = > LF, line feed (unix)
  • CHR (13) = > CR, возврат каретки (окна, вместе с LF)

согласно определению языка Oracle PLSQL, символьный литерал может содержать "любой печатаемый символ в наборе символов". https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/02_funds.htm#2876

@Robert Love's answer демонстрирует наилучшую практику для читаемого кода, но вы также можете просто ввести символ строки в код. Вот пример из терминала Linux с помощью 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.

вместо CHR( NN ) функция вы также можете использовать Unicode литеральные escape-последовательности, такие как u'85' который я предпочитаю, потому что, ну вы знаете, мы не живем в 1970 году. См. эквивалентный пример ниже:

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

PL/SQL procedure successfully completed.

для справедливого покрытия, я думаю, стоит отметить, что разные операционные системы используют разные символы/последовательности символов для обработки конца строки. Вы должны подумать о контексте, в котором будет просматриваться или печататься вывод вашей программы, чтобы определить, используете правильную технику.

  • Microsoft Windows: CR / LF или u'0D0A'
  • Unix (включая Apple MacOS): LF или u'0A'
  • IBM OS390: NEL или u'85'
  • HTML:'<BR>'
  • XHTML-кода: '<br />'
  • etc. так далее.