Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/09/2011, 18h46   #1
Invité de passage
 
Homme
Étudiant
Inscription : septembre 2011
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Burkina Faso

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2011
Messages : 1
Points : 0
Points : 0
Par défaut La commande MERGE

*** Bonjour, ***

J'aimerai insérer des données d'une table dans une autre avec somme des champs si la clé existe déjà et insertion sinon.

Pour cela j'ai utilisé la commance MERGE :
Code :
1
2
3
4
5
6
7
8
MERGE INTO agent a 
USING (SELECT * FROM ouvrier) d
ON(a.id=d.id)
WHEN MATCHED THEN
UPDATE SET a.som1=a.som1+d.val1,a.som2=a.som2+d.val2
WHEN NOT MATCHED THEN
INSERT(a.id,a.som1,a.som2)
VALUES(d.id,d.som2,d.val2);
Erreur renvoyée : ORA-00905: mot-clé absent
J'utilise Oracle 10g.

*** Merci d'avance***
risbochris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 19h09   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Vous vous êtes trompé au niveau de l'INSERT, dans la partie VALUES, vous essayez d'insérer d.som2 au lieu de d.val1.
Ceci dit ça ne correspond pas au message d'erreur que vous récupérez.

Au passage, si dans le using vous faites une simple sélection, vous pouvez directement utiliser la table :
Code :
1
2
3
4
5
6
7
8
9
 MERGE INTO agent a 
 USING ouvrier d
    ON (a.id = d.id)
  WHEN MATCHED THEN UPDATE
   SET a.som1 = a.som1 + d.val1
     , a.som2 = a.som2 + d.val2
  WHEN NOT MATCHED THEN
INSERT (a.id, a.som1, a.som2)
VALUES (d.id, d.val1, d.val2);
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h09.


 
 
 
 
Partenaires

Hébergement Web