¿Cómo ignoro los símbolos en un script SQL que se ejecuta desde SQL Plus?
Pregunta
Tengo un script SQL que crea un paquete con un comentario que contiene un signo comercial (&).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?
Solución
Esto puede funcionar para usted:
set define off
De lo contrario, el signo comercial debe estar al final de una cadena,
'StackOverflow &' || ' you'
EDITAR:Estaba feliz de hacer clic al guardar...Esto fue referenciado desde un Blog.
Otros consejos
Si a veces utiliza variables de sustitución, es posible que no desee desactivar la definición.En estos casos, puede convertir el signo comercial de su equivalente numérico como en || Chr(38) ||
o agréguelo como un solo carácter como en || '&' ||
.
Lo resolví con el siguiente código:
set escape on
y pon un \ al lado de & a la izquierda 'value_\&_intert'
atención
Puede establecer el carácter especial, que se busca al ejecutar un script, en otro valor mediante el uso del SET DEFINE <1_CHARACTER>
De forma predeterminada, la función DEFINIR está activada y configurada en &
Se puede desactivar, como ya se mencionó, pero también se puede evitar configurándolo en un valor diferente.Ten muy en cuenta en qué signo lo configuras.En el siguiente ejemplo, elegí el carácter #, pero esa elección es solo un ejemplo.
SQL> select '&var_ampersand #var_hash' from dual;
Enter value for var_ampersand: a value
'AVALUE#VAR_HASH'
-----------------
a value #var_hash
SQL> set define #
SQL> r
1* select '&var_ampersand #var_hash' from dual
Enter value for var_hash: another value
'&VAR_AMPERSANDANOTHERVALUE'
----------------------------
&var_ampersand another value
SQL>
set define off <- Esta es la mejor solución que encontré
También lo intenté...
establecer definir}
Pude insertar varios registros que contienen Ampersand Caracteres '&', pero no puedo usar el carácter '}' en el texto, así que decidí usar "Set Defining Off" y todo funciona como debería.
De acuerdo a estas buenas preguntas frecuentes Hay un par de soluciones.
También es posible que puedas escapar del signo comercial con el carácter de barra invertida. \
si puedes modificar el comentario.
Tenía una declaración CASE con CUANDO columna = 'algún texto y más texto' ENTONCES....
Lo reemplacé con When column = 'somext' || Chr (38) || 'más texto' que ...
También puede usar cuando una columna como 'a algún text _ más texto' luego ...
(_ es el comodín para un solo carácter)