developer - sqlplus unix
¿Cómo ignoro ampersands en un script SQL que se ejecuta desde SQL Plus? (6)
Esto puede funcionar para usted:
set define off
De lo contrario, el ampersand debe estar al final de una cadena,
''StackOverflow &'' || '' you''
EDITAR: Estaba feliz al hacer clic ... al guardar ... Esto fue referenciado desde un blog .
Tengo un script SQL que crea un paquete con un comentario que contiene un signo de y comercial (&). Cuando ejecuto el script desde SQL Plus, se me pide que ingrese un valor sustituto para la cadena que comienza con &. ¿Cómo desactivo esta característica para que SQL Plus ignore el signo?
Lo resolví con el siguiente código:
set escape on
y poner un / al lado y en la izquierda ''value_/&_intert''
Att
Puede configurar el carácter especial, que se busca al ejecutar un script, a otro valor mediante el uso de SET DEFINE <1_CHARACTER>
De manera predeterminada, la función DEFINE está activada, y está configurada en &
Se puede desactivar, como se mencionó anteriormente, pero también se puede evitar estableciendo un valor diferente. Sé muy consciente de a qué signo lo configuraste. 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>
Según estas agradables preguntas frecuentes, hay un par de soluciones.
También podría escapar del signo y con el carácter de barra invertida /
si puede modificar el comentario.
Si a veces usa variables de sustitución, es posible que no desee desactivarla. En estos casos, podría convertir el signo & de su equivalente numérico como en || Chr(38) ||
|| Chr(38) ||
o añádalo como un solo carácter como en || ''&'' ||
|| ''&'' ||
.
set define off <- Esta es la mejor solución que encontré
También intenté ...
establecer definir}
Pude insertar varios registros que contenían caracteres y ''y'' pero no puedo usar el carácter ''}'' en el texto. Así que decidí usar "definir definición de desactivado" y todo funciona como debería.