Salut,

J'ai conçu un script qui génère des requêtes dynamiques dont le contenu n'est pas correctement exécuté ;(

Voici un exemple de requête qui ne passe pas (execute immediate):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
MERGE INTO E1XL1.CMPACTION d 
USING (SELECT VERSION,COMPONENTNAME,ACTIONNAME,DESCRIPTION,ISCLOSE FROM E1XL0.CMPACTION) s 
ON (d.VERSION=s.VERSION AND d.COMPONENTNAME=s.COMPONENTNAME AND d.ACTIONNAME=s.ACTIONNAME) 
WHEN MATCHED THEN 
     UPDATE SET d.VERSION = s.VERSION,d.COMPONENTNAME = s.COMPONENTNAME,d.ACTIONNAME = s.ACTIONNAME,d.DESCRIPTION = s.DESCRIPTION,d.ISCLOSE = s.ISCLOSE 
WHEN NOT MATCHED THEN 
     INSERT (d.VERSION,d.COMPONENTNAME,d.ACTIONNAME,d.DESCRIPTION,d.ISCLOSE) 
     VALUES (s.VERSION,s.COMPONENTNAME,s.ACTINNAME,s.DESCRIPTION,s.ISCLOSE)
L'erreur est la suivante :

ORA-00904: "D"."VERSION" : identificateur non valide
il me souligne ça : "ON (d.VERSION"

La table E1XL1.CMPACTION d contient forcément le champ VERSION puisque c'est du complètement dynamique, je génère les champs à partir de ALL_TAB_COLUMNS etc.

Je suis quand même allé vérifier bien sûr.

Je nage un peu, je pense que j'ai du mal comprendre MERGE INTO mais pourtant je fais tout pareil que dans l'exemple de psoug.org dispo à cette adresse :

http://www.psoug.org/reference/merge.html

Voilà, votre aide est la bienvenue
a+
seb