Como posso ignorar ampersands em um script SQL em execução a partir do SQL Plus?

StackOverflow https://stackoverflow.com/questions/118190

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu tenho um script SQL que cria um pacote com um comentário que contém um e comercial (&). Quando eu executar o script de SQL Plus, sou solicitado a inserir um valor substituto para a seqüência começando com &. Como faço para desativar esse recurso para que SQL Plus ignora o comercial?

Foi útil?

Solução

Isso pode funcionar para você:

set define off

Caso contrário, as necessidades e comercial para estar na extremidade de uma corda,

'StackOverflow &' || ' you'

EDIT: Eu estava clique feliz ao salvar ... Isto foi referenciado a partir de um blogue .

Outras dicas

Se você às vezes usam variáveis ??de substituição que você pode não querer transformar definir off. Nestes casos, você pode converter o comercial de seu equivalente numérico como em || Chr(38) || ou anexá-lo como um único caractere como em || '&' ||.

Eu resolvidos com o código abaixo:

set escape on

e colocar um \ ao lado e na 'value_\&_intert' esquerda

Att

Você pode definir o carácter especial, que é procurado após a execução de um script, para outro valor por meio do uso da SET DEFINE <1_CHARACTER>

Por padrão, a definir-se a função está ligada, e é definido como &

Ele pode ser desligado - como já foi dito - mas pode ser evitado também por meio de defini-lo como um valor diferente. Estar muito consciente do que sinal você configurá-lo para. No exemplo abaixo, eu tenho escolheu o caractere #, mas que a 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>

set definir off <- Esta é a melhor solução que eu encontrei

Eu também tentei ...

set definir}

Eu era capaz de inserir vários registros que contêm caracteres e comercial 'e' mas eu não posso usar o caractere '}' no texto Então eu decidi usar "set definir off" e tudo funciona como deveria.

De acordo com a este simpático FAQ há um par soluções.

Você também pode ser capaz de escapar e comercial com a \ barra invertida se você pode modificar o comentário.

Eu tive uma instrução CASE com QUANDO coluna = 'sometext e mais texto' ENTÃO ....

Eu substituí-lo com QUANDO coluna = 'sometext' || CHR (38) || 'Mais texto' ENTÃO ...

Você também pode usar QUANDO coluna LIKE 'sometext _ mais texto' ENTÃO ...

(_ é o curinga para um único caractere)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top