Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como inserir uma string que contém um &


Eu continuo esquecendo isso e voltando a ele novamente! Acho que a melhor resposta é uma combinação das respostas fornecidas até agora.

Em primeiro lugar, &é o prefixo da variável no sqlplus/sqldeveloper, daí o problema - quando aparece, espera-se que faça parte de um nome de variável.

SET DEFINE OFF irá parar a interpretação do sqlplus &desta forma.

Mas e se você precisar usar variáveis ​​sqlplus e literal e caracteres?
  • Você precisa de SET DEFINE ON para fazer as variáveis ​​funcionarem
  • E SET ESCAPE ON para escapar dos usos de &.

por exemplo.
set define on
set escape on

define myvar=/forth

select 'back\\ \& &myvar' as swing from dual;

Produz:
old   1: select 'back\\ \& &myvar' from dual
new   1: select 'back\ & /forth' from dual

SWING
--------------
back\ & /forth

Se você quiser usar um caractere de escape diferente:
set define on
set escape '#'

define myvar=/forth

select 'back\ #& &myvar' as swing from dual;

Ao definir um caractere de escape específico, você pode ver 'SP2-0272:o caractere de escape não pode ser alfanumérico ou espaço em branco'. Isso provavelmente significa que você já tem o caractere de escape definido e as coisas ficam horrivelmente auto-referenciais. A maneira limpa de evitar esse problema é ativar o escape primeiro:
set escape off
set escape '#'