Respostas:
Isso pode funcionar para você:
set define off
Caso contrário, o e comercial precisa estar no final de uma string,
'StackOverflow &' || ' you'
EDIT: Fiquei feliz com o clique ao salvar ... Isso foi mencionado em um blog .
Se você às vezes usa variáveis de substituição, pode não querer desligar a definição. Nesses casos, você pode converter o e comercial de seu equivalente numérico como em || Chr(38) ||
ou anexá-lo como um único caractere como em || '&' ||
.
Resolvi com o código abaixo:
set escape on
e coloque um \ ao lado de & à esquerda 'value_\&_intert'
Att
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
mas ele estava me dando o erro ORA-01780: string literal required
.
Você pode definir o caractere especial, que é procurado na execução de um script, para outro valor por meio do uso do SET DEFINE <1_CHARACTER>
Por padrão, a própria função DEFINE está ativada e configurada como &
Ele pode ser desativado - como já mencionado - mas também pode ser evitado configurando-o para um valor diferente. Esteja bem ciente de qual sinal você definiu. No exemplo abaixo, escolhi o caractere #, mas essa escolha é apenas um exemplo.
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 acordo com este bom FAQ, existem algumas soluções.
Você também pode conseguir escapar do "e" comercial com o caractere de barra invertida, \
se puder modificar o comentário.
set escape on