Éviter les invites de variables de substitution avec des esperluettes dans Oracle SQL
La fonctionnalité de variable de substitution d'Oracle SQL Developer peut provoquer des problèmes lors de l'insertion de données contenant des esperluettes (&). Cela se traduit souvent par l'invite « Entrez la valeur de substitution ». L'esperluette est interprétée comme un indicateur variable et non comme un caractère littéral.
Prenons cet exemple, où une esperluette apparaît dans une URL :
<code class="language-sql">http://www.netvibes.com/subscribe.php?type=rss&url=</code>
Pour insérer correctement cette URL, vous devez échapper l'esperluette. Une méthode utilise la fonction CHR(38)
, qui représente le code ASCII de l'esperluette :
<code class="language-sql">INSERT INTO agregadores_agregadores (idagregador, nombre, url) VALUES (2, 'Netvibes', 'http://www.netvibes.com/subscribe.php?type=rss' || CHR(38) || 'url=');</code>
Cela remplace l'esperluette littérale par son équivalent ASCII, évitant ainsi le conflit de variables de substitution.
Alternativement, vous pouvez désactiver globalement le comportement de la variable de substitution en utilisant :
<code class="language-sql">SET DEFINE OFF;</code>
Après avoir exécuté cette commande, les esperluettes seront traitées comme des caractères littéraux dans toutes les instructions SQL suivantes. N'oubliez pas que SET DEFINE OFF
affecte toutes les requêtes futures au cours de la session en cours. Par conséquent, si vous avez besoin de variables de substitution plus tard, vous devrez utiliser SET DEFINE ON;
pour les réactiver.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!