web-dev-qa-db-fra.com

Caractère d'échappement Oracle SQL (pour un '&')

Lors de la tentative d'exécution d'instructions d'insertion SQL à l'aide de Oracle SQL Developer , je continue à générer une invite "Entrez la valeur de substitution":

insert into agregadores_agregadores 
(
 idagregador,
 nombre,
 url
) 
values 
(
 2,
 'Netvibes',
 'http://www.netvibes.com/subscribe.php?type=rss\&url='
);

J'ai essayé en échappant le caractère spécial de la requête en utilisant le '\' ci-dessus mais je ne peux toujours pas éviter l'esperluette '&', provoquant une substitution de chaîne.

82
ian_scho

le & est la valeur par défaut de DEFINE, ce qui vous permet d'utiliser des variables de substitution. J'aime l'éteindre avec

SET DEFINE OFF

vous n'aurez alors plus à craindre de vous échapper ni de CHR (38).

118
Neil Kodner

|| chr(38) ||

Cette solution est parfaite.

55
Aseem

Définissez le caractère défini sur autre chose que &

 SET DEFINE ~ 
 Créer un tableau blah (x varchar (20)); 
 Insérer dans blah (x) les valeurs ('blah & amp'); 
 Select * parmi bla; 
 
 X 
 -------------------- 
 bla & amp 
 
30
RC.
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL)
values (2,'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url=');
15
Jeffrey Kemp
SELECT 'Free &' || ' Clear' FROM DUAL;
10
drj

select 'one'||'&'||'two' from dual

4
Izo

La vraie réponse est que vous devez définir le caractère d'échappement sur '\': SET ESCAPE ON

Le problème est peut-être dû au fait que l'échappement est désactivé ou que le caractère d'échappement a été défini sur autre chose que '\'. L'instruction ci-dessus activera l'échappement et définissez-le sur '\'.


Aucune des autres réponses précédemment publiées ne répond en réalité à la question initiale. Ils travaillent tous autour du problème mais ne le résolvent pas.

1
Terrible Tadpole