Bonjour à tous,

Je souhaite simplement avoir une information. Je viens d'avoir connaissance de l'instruction MERGE et j'aimerais savoir si je peux l'utiliser de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
--pour initialiser le code contrat 0715, on concatène à 0715 les derniers chiffres du code créance 0312 correspondant
            SET DecCodeContrat715 = '0715'||substr(DecCodeContrat312_C2,5,16);
 
            MERGE INTO decompte_poste D1
                USING (select dec_code_contrat, dec_code_poste, dec_type_decompte, dec_code_client, dec_mt_poste, dec_mt_restant, 
                dec_type_tiers, dec_code_tiers FROM decompte_poste) D2
                ON (D1.dec_code_contrat = DecCodeContrat715
                AND D1.dec_code_poste = DecCodePoste)
            WHEN MATCHED THEN
                UPDATE SET D1.dec_mt_poste = D1.dec_mt_poste + DecMtPoste, D1.dec_mt_restant = D1.dec_mt_restant + DecMtRestant;
            WHEN NOT MATCHED THEN
                UPDATE SET D1.dec_code_contrat = DecCodeContrat715;
En gros, je voudrais savoir si je peux exécuter un UPDATE dans la clause 'WHEN NOT MATCHED' au lieu d'un INSERT.