Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment insérer une chaîne contenant un &

Je n'arrête pas de l'oublier et d'y revenir ! Je pense que la meilleure réponse est une combinaison des réponses fournies jusqu'à présent.

Premièrement, &est le préfixe de la variable dans sqlplus/sqldeveloper, d'où le problème - lorsqu'il apparaît, il est censé faire partie d'un nom de variable.

SET DEFINE OFF arrêtera l'interprétation de sqlplus &de cette façon.

Mais que se passe-t-il si vous devez utiliser les variables sqlplus et littéral et caractères ?

  • Vous avez besoin de SET DEFINE ON pour que les variables fonctionnent
  • Et SET ESCAPE ON pour échapper aux utilisations de &.

ex.

set define on
set escape on

define myvar=/forth

select 'back\\ \& &myvar' as swing from dual;

Produit :

old   1: select 'back\\ \& &myvar' from dual
new   1: select 'back\ & /forth' from dual

SWING
--------------
back\ & /forth

Si vous souhaitez utiliser un autre caractère d'échappement :

set define on
set escape '#'

define myvar=/forth

select 'back\ #& &myvar' as swing from dual;

Lorsque vous définissez un caractère d'échappement spécifique, vous pouvez voir 'SP2-0272 :le caractère d'échappement ne peut pas être alphanumérique ou un espace'. Cela signifie probablement que vous avez déjà défini le caractère d'échappement et que les choses deviennent horriblement auto-référentielles. La façon propre d'éviter ce problème est de déclencher d'abord l'échappement :

set escape off
set escape '#'