sql >> Base de Datos >  >> RDS >> Oracle

Cómo insertar una cadena que contiene un &

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