J'essaie une simple instruction INSERT sur une base de données Oracle. L’une des valeurs est un champ VARCHAR2 et l’instruction insert contient une esperluette. Comment puis-je faire cela? J'ai essayé les méthodes suivantes:
D'autres idées?
Comment j’ai résolu le problème, c’est de fuir le & avec un autre et.
Par exemple:
INSERT INTO Foo (Bar) VALUES ('Up && Away');
Fonctionne bien. Merci pour votre aide
Une des fonctionnalités de PL/SQL Developer avec laquelle il faut du temps pour se familiariser est la pléthore de différents types de fenêtres.
L'un d'eux est la fenêtre COMMAND, qui est essentiellement un émulateur SQL * Plus. Nous pouvons exécuter des commandes SQL * Plus ainsi que SQL, afin que SET ESCAPE
, SET DEFINE
et même SET SCAN OFF
fonctionnent dans cette fenêtre.
Avez-vous essayé quelque chose comme ça?
INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy');
En améliorant ma première réponse, votre problème est lié à PL/SQL Developer. Si vous exécutez votre bloc dans une fenêtre de commande de développeur PL/SQL, vous pouvez également utiliser la définition standard SET DEFINE OFF, qui fonctionne de la même manière que dans SQL * Plus.
le concat a parfaitement fonctionné pour moi ci-dessous est ce que j'ai fait dans ma déclaration choisie:
select FUND_NM
FROM PERFORMANCE
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS')
J'utilise chr(38)
où j'ai besoin d'une esperluette en PL/SQL.
addr:= 'mysite.com/order.aspx?no=5678' || CHR(38) || 'id=947';
--above line gives you 'mysite.com/order.aspx?no=5678&id=947';
Ceci est juste un problème de l'éditeur SQL. Pour résoudre ce problème, il suffit de compiler la procédure avec SET DEFINE OFF; . L'exécution qui est PL (en cours d'exécution sur le serveur) n'aura pas ce problème.