Domanda Come inserire il carattere di nuova riga in 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.';

Errore (34,33): PLS-00103: incontrato il simbolo "/" quando ci si aspetta uno   di quanto segue: (- + caso mod nuovo conteggio avg null   corrente max min precedente sql stddev somma varianza eseguita forall merge   tubo della data dell'intervallo di data e ora   


44
2018-04-28 00:06


origine


risposte:


Chr (Number) dovrebbe funzionare per voi

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

Ricorda che piattaforme diverse si aspettano caratteri di nuova riga diversi:

  • CHR (10) => LF, avanzamento riga (unix)
  • CHR (13) => CR, ritorno a capo (Windows, insieme a LF)

96
2018-04-28 00:33



Secondo la definizione del linguaggio Oracle PLSQL, un carattere letterale può contenere "qualsiasi carattere stampabile nel set di caratteri". https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/02_funds.htm#2876

La risposta di @Robert Love mostra una buona pratica per il codice leggibile, ma puoi anche semplicemente digitare il carattere di avanzamento nel codice. Ecco un esempio da un terminale 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.

Invece della funzione CHR (NN) puoi anche usare sequenze di escape letterali Unicode come u'\0085' che preferisco perché, beh, sai che non viviamo più nel 1970. Vedi l'esempio equivalente qui sotto:

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

PL/SQL procedure successfully completed.

Per una copertura equa suppongo che valga la pena di notare che diversi sistemi operativi usano caratteri e sequenze di caratteri diversi per la gestione di fine linea. Devi avere un'idea del contesto in cui l'output del tuo programma verrà visualizzato o stampato, al fine di determinare se stai utilizzando la tecnica giusta.

  • Microsoft Windows: CR / LF o u'\000D\000A'
  • Unix (incluso Apple MacOS): LF o u'\000A'
  • IBM OS390: NEL o u'\0085'
  • HTML: '<BR>'
  • XHTML: '<br />'
  • ecc. ecc.

0
2017-07-25 10:37