Bonjour à tous,
Je fais le MERGE suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 MERGE INTO table_cible alias_cible USING ( SELECT id id_source, dt_maj dt_source, chp1 chp1_source, chp2_source FROM table_source ) s ON ( s.id_source = alias_cible.id and s.chp1_source = to_char(alias_cible.dt_decl,'YYYYMMDD')) WHEN MATCHED then UPDATE set id = id_source WHEN NOT MATCHED then INSERT (id, dt_maj, dt_decl, chp2) VALUES (id_source, dt_maj, to_date(chp1_source, 'YYYYMMDD'), chp2_source); EXCEPTION WHEN OTHERS THEN err_msg := SUBSTR(SQLERRM, 1, 100)
La partie en vert ne m'intéresse pas, mais quand je supprime le WHEN MATCHED, j'ai le message d'erreur suivant:
Donc, je la laisse en mettant un UPDATE sur un champ, sans changer sa valeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part "ORA-00905: Mot-clé absent"
Mais alors, j'ai un autre message d'erreur:
Après recherche sur plusieurs sites, il semble que ce problème survient quand on essaie de mettre à jour la clé de la table TABLE_CIBLE, or, cette table n'a pas de clé chez moi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "ORA-00904: "TABLE_CIBLE"."ID" : identificateur non valide"
Au bout du compte, ce que je cherche à faire, c'est d'insérer si la ligne n'existe pas, mais de ne rien toucher si la ligne existe.
Merci de votre aide
Partager