Comment ignorer les esperluettes dans un script SQL exécuté à partir de SQL Plus?

J’ai un script SQL qui crée un package avec un commentaire contenant une esperluette (&). Lorsque je lance le script depuis SQL Plus, je suis invité à saisir une valeur de remplacement pour la chaîne commençant par &. Comment puis-je désactiver cette fonctionnalité pour que SQL Plus ignore la perluète?

Cela peut fonctionner pour vous:

set define off 

Sinon, l’esperluette doit être à la fin d’une chaîne,

 'StackOverflow &' || ' you' 

EDIT: J’étais claqué lors de l’enregistrement … Cela a été référencé à partir d’un blog .

Si vous utilisez parfois des variables de substitution, vous ne voudrez peut-être pas désactiver la définition. Dans ces cas, vous pouvez convertir l’esperluette de son équivalent numérique comme dans || Chr(38) || || Chr(38) || ou ajoutez-le comme un seul caractère comme dans || '&' || || '&' || .

J’ai résolu avec le code ci-dessous:

 set escape on 

et mettre un \ à côté de & dans la 'value_\&_intert' gauche 'value_\&_intert'

Att

Vous pouvez définir le caractère spécial, qui est recherché lors de l’exécution d’un script, à une autre valeur en utilisant le SET DEFINE <1_CHARACTER>

Par défaut, la fonction DEFINE elle-même est activée et définie sur &

Il peut être désactivé – comme déjà mentionné – mais il est également possible de l’éviter en lui atsortingbuant une valeur différente. Soyez très conscient de quel signe vous le définissez. Dans l’exemple ci-dessous, j’ai choisi le caractère #, mais ce choix n’est qu’un exemple.

 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 define off <- Ceci est la meilleure solution que j'ai trouvée

J’ai aussi essayé …

définir définir}

J’ai pu insérer plusieurs enregistrements contenant des caractères d’esperluette “&” mais je ne peux pas utiliser le caractère “}” dans le texte. J’ai donc décidé d’utiliser “définir définir” et tout fonctionne comme il se doit.

Selon cette belle FAQ, il existe quelques solutions.

Vous pouvez également être en mesure d’échapper à l’esperluette avec le caractère barre oblique inverse \ si vous pouvez modifier le commentaire.

J’ai eu une déclaration CASE avec WHEN column = ‘sometext & more text’ ALORS ….

Je l’ai remplacé par WHEN column = ‘sometext’ || CHR (38) || ‘plus de texte’ ALORS …

vous pouvez aussi utiliser WHEN colonne LIKE ‘sometext _ plus de texte’ ALORS …

(_ est le caractère générique d’un seul caractère)