Как ввести символ новой строки в Oracle? - PullRequest
52 голосов
/ 28 апреля 2011
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 новый ноль среднее число текущий максимальный мин. предыдущий sql stddev сумма дисперсии выполнить полное объединение временная метка

Ответы [ 2 ]

111 голосов
/ 28 апреля 2011

Chr (Число) должно работать на вас.

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

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

  • CHR (10) => LF, перевод строки (unix)
  • CHR (13) => CR, возврат каретки (окна вместе с LF)
1 голос
/ 25 июля 2018

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

@ Ответ Роберта Лава показывает лучшую практику для читаемого кода, но вы также можете просто ввести символ перевода строки в коде. Вот пример с терминала 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) вы также можете использовать буквенные escape-последовательности Unicode, такие как u'\0085', которые я предпочитаю, потому что, вы знаете, мы больше не живем в 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 />'
  • и т.д.. и т. д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...