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é 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 satisfait du clic lors de la sauvegarde ... Cela a été référencé depuis 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 à partir de son équivalent numérique comme dans || Chr(38) ||
ou l'ajouter sous la forme d'un seul caractère comme dans || '&' ||
.
J'ai résolu avec le code ci-dessous:
set escape on
et mettez un\à côté de & à gauche 'value_\&_intert'
Att
Vous pouvez définir le caractère spécial recherché lors de l'exécution d'un script sur une autre valeur à l'aide de SET DEFINE <1_CHARACTER>
Par défaut, la fonction DEFINE elle-même est activée et définie sur et
Comme vous l'avez déjà mentionné, il peut être désactivé, mais vous pouvez également l'éviter en lui attribuant une valeur différente. Soyez très conscient du signe que vous avez défini. 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 <- 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.
Selon ce Nice FAQ il y a plusieurs 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'avais une déclaration CASE avec WHEN column = 'sometext & more text' THEN ....
Je l'ai remplacé par WHEN column = 'sometext' || CHR (38) || 'plus de texte' ALORS ...
vous pouvez également utiliser QUAND colonne LIKE 'sometext _ more text' THEN ...
(_ est le caractère générique pour un seul caractère)