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 '#'