¡Sigo olvidando esto y volviendo a él otra vez! Creo que la mejor respuesta es una combinación de las respuestas proporcionadas hasta ahora.
En primer lugar, &es el prefijo de variable en sqlplus/sqldeveloper, de ahí el problema:cuando aparece, se espera que sea parte de un nombre de variable.
SET DEFINE OFF detendrá la interpretación de sqlplus y de esta manera.
Pero, ¿qué sucede si necesita usar las variables sqlplus y? literal y caracteres?
- Necesitas SET DEFINE ON para que las variables funcionen
- Y SET ESCAPE ON para escapar de los usos de &.
por ejemplo
set define on
set escape on
define myvar=/forth
select 'back\\ \& &myvar' as swing from dual;
Produce:
old 1: select 'back\\ \& &myvar' from dual
new 1: select 'back\ & /forth' from dual
SWING
--------------
back\ & /forth
Si desea utilizar un carácter de escape diferente:
set define on
set escape '#'
define myvar=/forth
select 'back\ #& &myvar' as swing from dual;
Cuando configura un carácter de escape específico, es posible que vea 'SP2-0272:el carácter de escape no puede ser alfanumérico o un espacio en blanco'. Esto probablemente significa que ya tiene definido el carácter de escape, y las cosas se vuelven terriblemente autorreferenciales. La forma limpia de evitar este problema es activar primero el escape:
set escape off
set escape '#'