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

Lors de la tentative d’exécution d’instructions d’insertion SQL à l’aide d’ Oracle SQL Developer, je continue à générer une invite “Entrez une 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é d’ échapper au caractère spécial dans la requête en utilisant le ‘\’ ci-dessus mais je ne peux toujours pas éviter l’esperluette, ‘&’, provoquant une substitution de chaîne.

Allez-y les punks, fais ma journée 🙂

the & est la valeur par défaut pour DEFINE, ce qui vous permet d’utiliser des variables de substitution. J’aime l’éteindre en utilisant

SET DEFINE OFF

alors vous n’aurez plus à vous soucier de vous échapper ou du CHR (38).

|| chr(38) ||

Cette solution est parfaite.

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

 SET DEFINE ~
 créer la table blah (x varchar (20));
 insérer dans les valeurs blah (x) ('blah & amp');
 sélectionnez * from blah;

 X                    
 -------------------- 
 blah & amp 

 insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL) values (2,'Netvibes', 'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url='); 
 SELECT 'Free &' || ' Clear' FROM DUAL; 

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

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 a été désactivé ou que le caractère d’échappement a été défini sur autre chose que «\». L’instruction ci-dessus permettra de s’échapper et de la définir sur ‘\’.


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