web-dev-qa-db-fra.com

Comment entrer un caractère de nouvelle ligne dans 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: Le symbole "/" est rencontré lorsque l'un des éléments suivants est attendu: (- + case mod nouveau null moy. Courant max min précédent sql stddev variance somme exécutée pour tout fusionner l'heure fusionner l'horodatage intervalle de date

52
indolent

Chr (Number) devrait fonctionner pour vous.

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

N'oubliez pas que différentes plates-formes attendent différents caractères de nouvelle ligne:

  • CHR (10) => LF, saut de ligne (unix)
  • CHR (13) => CR, retour chariot (fenêtres, ensemble avec LF)
111
Robert Love

Selon la définition du langage Oracle PLSQL, un littéral de caractère peut contenir "tout caractère imprimable du jeu de caractères". https://docs.Oracle.com/cd/A97630_01/appdev.920/a96624/02_funds.htm#2876

La réponse de @Robert Love présente une meilleure pratique en matière de code lisible, mais vous pouvez également taper simplement le caractère saut de ligne dans le code. Voici un exemple de terminal Linux utilisant 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.

Au lieu de la fonction CHR (NN), vous pouvez également utiliser des séquences d'échappement littérales Unicode telles que u'\0085' que je préfère parce que, vous savez, nous ne vivons plus en 1970. Voir l'exemple équivalent ci-dessous:

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

PL/SQL procedure successfully completed.

Pour une couverture équitable, il est intéressant de noter que différents systèmes d’exploitation utilisent différents caractères/séquences de caractères pour la gestion de fin de ligne. Vous devez avoir une idée du contexte dans lequel les résultats de votre programme vont être visualisés ou imprimés, afin de déterminer si vous utilisez la bonne technique.

  • Microsoft Windows: CR/LF ou u'\000D\000A'
  • Unix (y compris Apple MacOS): LF ou u'\000A'
  • IBM OS390: NEL ou u'\0085'
  • HTML: '<BR>'
  • XHTML: '<br />'
  • etc.
1
Douglas Held