bonjour à tous,
j'ai quelques difficultés avec l'instruction Merge.
je voudrais que la table (Merge Into) sur laquelle je ferais les mises à jour contienne un "Where", car ces mises à jour ne concernent qu'une partie de la table.
Merci à vous.![]()
bonjour à tous,
j'ai quelques difficultés avec l'instruction Merge.
je voudrais que la table (Merge Into) sur laquelle je ferais les mises à jour contienne un "Where", car ces mises à jour ne concernent qu'une partie de la table.
Merci à vous.![]()
MERGE
C'est précisément ce que fait la requête de Waldar de ton précédent post...
salut et merci pour le lien.
En fait Waldar a ajouté un "Where" en fin de la requête mais j'avais de besoin de :
C'est bon merci, j'ai trouvé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Merge into table where...
Mais on ne peut pas faire :
??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ... When matched then update ... when Not matched then update...
Dans mon besoin, il faut que update la table(col1) quand 'Matched' et update la table(Col2) when not matched.
Alors il faut faire du PL/SQL, MERGE ne permet pas de faire ça
Ok merci.
Je clôture ce post alors..![]()
j'utilise ROWCOUNT pour connaitre le nombre de lignes mises à jour après une requête, mais pas pour optimiser...![]()
C'est juste plus rapide de faire :
Que compter les lignes et faire un update ou l'autre selon le résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 UPDATE t1 IF SQL%ROWCOUNT = 0 THEN UPDATE t2![]()
Oui, mais mon besoin ici est :
Voir s'il y a une correspondance entre 2 table, ligne par ligne :
- Si c'est le cas Update la col1 de la table
- Sinon update la col2 de la table.
OK, j'avais pas compris. A ce moment là, il suffit d'utiliser CASE dans une sous-requête de l'UPDATE
Le case avec un?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Exists
Non :
Mais bon... j'suis en train de me dire que 2 UPDATE sera plus simple et même peut-être plus rapide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UPDATE t1 SET (col1,col2) = (SELECT CASE ... ELSE )![]()
c'est ce que j'ai fait.
En fait mon package fait beaucoup de mises à jour et crée et supprime plus de 30 index dynamiquement !!!
Partager