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

StackOverflow https://stackoverflow.com/questions/118190

  •  02-07-2019
  •  | 
  •  

Question

J'ai un script SQL qui crée un package avec un commentaire contenant une esperluette (& amp;). 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 & Amp ;. Comment puis-je désactiver cette fonctionnalité pour que SQL Plus ignore la perluète?

Était-ce utile?

La solution

Cela peut fonctionner pour vous:

set define off

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

'StackOverflow &' || ' you'

EDIT: J'étais content au clic lors de la sauvegarde ... Ceci a été référencé depuis un blog .

Autres conseils

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 depuis 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 le problème avec le code ci-dessous:

set escape on

et mettez un \ à côté de & amp; à 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 la touche SET DEFINE <1_CHARACTER>

.

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

.

Il peut être désactivé - comme mentionné précédemment - mais il peut également être évité en le réglant à 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>

définir définir off < - Ceci est la meilleure solution que j'ai trouvé

J'ai aussi essayé ...

set define}

J'ai pu insérer plusieurs enregistrements contenant des caractères «et commercial», & amp; ' mais je ne peux pas utiliser le caractère '}' dans le texte J'ai donc décidé d'utiliser & Quot; set define off & Quot; et tout fonctionne comme il se doit.

Selon cette belle FAQ , il existe un couple solutions.

Vous pourrez peut-être également échapper l'esperluette avec le caractère barre oblique inversée \ si vous pouvez modifier le commentaire.

J'ai eu une instruction CASE avec WHEN column = 'sometext & amp; plus de texte 'ALORS ....

Je l'ai remplacé par QUAND colonne = 'sometext' || CHR (38) || 'plus de texte' ALORS ...

vous pouvez aussi utiliser QUAND colonne LIKE 'sometext _ plus de texte' ALORS ...

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top