Eu tenho um script SQL que cria um pacote com um comentário contendo um E comercial (&). Quando executo o script do SQL Plus, sou solicitado a inserir um valor substituto para a string que começa com &. Como desativo esse recurso para que o SQL Plus ignore o "e" comercial?
104
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|| '&' ||
.fonte
Resolvi com o código abaixo:
e coloque um \ ao lado de & à esquerda
'value_\&_intert'
Att
fonte
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
mas ele estava me dando o erroORA-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.
fonte
set define off <- Esta é a melhor solução que encontrei
Eu também tentei ...
definir definir}
Consegui inserir vários registros contendo os caracteres e comercial '&', mas não consigo usar o caractere '}' no texto. Portanto, decidi usar "set define off" e tudo funciona como deveria.
fonte
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.fonte
set escape on
Eu tinha uma instrução CASE com a coluna WHEN = 'algo e mais texto' ENTÃO ...
Substituí-o por WHEN coluna = 'algo' || CHR (38) || 'mais texto' ENTÃO ...
você também pode usar a coluna WHEN LIKE 'something _ more text' THEN ...
(_ é o curinga para um único caractere)
fonte