Bonjour,
Je souhaiterais savoir s'il est possible (en fait j'ai déjà recherché mais je n'ais pas de réponse) de faire un MERGE sans clause WHEN NOT MATCHED
Je suis en version 9iR2 (pour la syntaxe).
Merci par avance
Bonjour,
Je souhaiterais savoir s'il est possible (en fait j'ai déjà recherché mais je n'ais pas de réponse) de faire un MERGE sans clause WHEN NOT MATCHED
Je suis en version 9iR2 (pour la syntaxe).
Merci par avance
çà revient un peu un UPDATE alors ?Envoyé par Patmane
y'a un truc que je pige pas là
Pas d'accord
Donne moi le Update (aussi peu couteux qui plus est) que cette instruction merge (par exemple)
Voila je voudrais faire un truc un peu comme ca, mais ca ne compile pas car le WHEN NOT MATCHED est obligatoire (et le INSERT obligatoire derrière WHEN NOT MATCHED)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 MERGE INTO detailFacture df USING (SELECT * FROM facture WHERE mag=0) f ON (df.numFacture=f.id) WHEN MATCHED THEN UPDATE SET dateFac=f.dateFac, dateLiv=f.dateLiv, mag=f.mag;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Merge ... When Not Matched Then Insert <...> Values <...> Where 1=2 ; End;
oui je voudrais bien mais..... j'ai pas le droit de mettre une clause where dans le INSERT d'un WHEN NOT MATCHED!!!
Un update du style est-il réellement beaucoup moins performant que l'instruction merge ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 update detailFacture set (dateFac, dateLiv, mag) = (select dateFac, dateLiv, mag from facture where mag = 0 and id = numFacture) where exists (select 1 from facture where mag = 0 and id = numFacture)
Et bien c'est la solution que j'ai pour le moment en production, mais c'est effectivement bien plus lourd que le MERGE. Enfin faute de solution, je vais rester sur un UPDATE!
Merci quand même
Ce sujet date un peu, mais tombant dessus par une recherche, je me dis que je peux toujours être utile.
Une requète comme celle ci-dessous est peut être moche mais je l'espère, efficace quand on veut mettre a jour une table à partir d'une autre, SANS INSERT.
(En sélectionnant les bonnes données dans le champ USING, le WHEN NOT MATCHED n'est jamais appelé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 MERGE INTO detailFacture df USING ( SELECT facture.* FROM facture,detailFacture WHERE mag=0 AND detailFacture.numFacture=facture.id) f ON (df.numFacture=f.id) WHEN MATCHED THEN UPDATE SET dateFac=f.dateFac, dateLiv=f.dateLiv, mag=f.mag When NOT Matched Then INSERT <...> VALUES <...> ;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager