Tengo un script SQL que crea un paquete con un comentario que contiene un ampersand (&). Cuando ejecuto el script desde SQL Plus, se me solicita que ingrese un valor sustituto para la cadena que comienza con &. ¿Cómo desactivo esta función para que SQL Plus ignore el signo comercial?
104
Si a veces utiliza variables de sustitución, es posible que no desee desactivar la definición. En estos casos, podría convertir el ampersand de su equivalente numérico como en
|| Chr(38) ||
o agregarlo como un solo carácter como en|| '&' ||
.fuente
Lo resolví con el siguiente código:
y poner \ al lado de & a la izquierda
'value_\&_intert'
Att
fuente
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
pero me estaba dando el errorORA-01780: string literal required
.Puede establecer el carácter especial, que se busca al ejecutar un script, en otro valor mediante el uso de
SET DEFINE <1_CHARACTER>
De forma predeterminada, la función DEFINE está activada y está configurada en &
Se puede apagar, como ya se mencionó, pero también se puede evitar estableciendo un valor diferente. Sea muy consciente de la señal que le asignó. En el siguiente ejemplo, elegí el carácter #, pero esa elección es solo un ejemplo.
fuente
set define off <- Esta es la mejor solución que encontré
También probé ...
establecer definir}
Pude insertar varios registros que contenían los caracteres '&' pero no puedo usar el carácter '}' en el texto. Así que decidí usar "set define off" y todo funciona como debería.
fuente
De acuerdo con estas interesantes preguntas frecuentes, hay un par de soluciones.
También es posible que pueda escapar del signo comercial con el carácter de barra invertida
\
si puede modificar el comentario.fuente
set escape on
Tenía una declaración CASE con WHEN column = 'sometext & more text' THEN ....
Lo reemplacé con CUANDO column = 'sometext' || CHR (38) || 'más texto' ENTONCES ...
también puede usar CUANDO la columna COMO 'algún texto _ más texto' ENTONCES ...
(_ es el comodín para un solo carácter)
fuente