Respuestas:
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 de hacer clic al guardar ... Esto fue referenciado desde un blog .
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 || '&' ||
.
Lo resolví con el siguiente código:
set escape on
y poner \ al lado de & a la izquierda 'value_\&_intert'
Att
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
pero me estaba dando el error ORA-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.
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>
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.
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)