J'ai un script SQL qui crée un package avec un commentaire contenant une esperluette (&). Lorsque j'exécute le script à partir de SQL Plus, je suis invité à entrer une valeur de remplacement pour la chaîne commençant par &. Comment désactiver cette fonctionnalité afin que SQL Plus ignore l'esperluette?
104
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 à partir de son équivalent numérique comme dans
|| Chr(38) ||
ou l'ajouter en tant que caractère unique comme dans|| '&' ||
.la source
J'ai résolu avec le code ci-dessous:
et mettre un \ à côté de & à gauche
'value_\&_intert'
Att
la source
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
mais cela me donnait l'erreurORA-01780: string literal required
.Vous pouvez définir le caractère spécial, recherché lors de l'exécution d'un script, sur 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 peut également être évité en le réglant sur une valeur différente. Soyez très conscient du signe que vous définissez. Dans l'exemple ci-dessous, j'ai choisi le caractère #, mais ce choix n'est qu'un exemple.
la source
set define off <- C'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 esperluette '&' mais je ne peux pas utiliser le caractère '}' dans le texte. J'ai donc décidé d'utiliser "set define off" et tout fonctionne comme il se doit.
la source
Selon cette belle FAQ, il existe plusieurs solutions.
Vous pourrez peut-être également échapper l'esperluette avec la barre oblique inverse
\
si vous pouvez modifier le commentaire.la source
set escape on
J'ai eu une instruction CASE avec WHEN column = 'someext & more text' THEN ....
Je l'ai remplacé par WHEN column = 'someext' || CHR (38) || 'plus de texte' ALORS ...
vous pouvez également utiliser WHEN colonne LIKE 'someext _ more text' THEN ...
(_ est le caractère générique d'un seul caractère)
la source