IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Mon merge ne fonctionne pas.


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Par défaut Mon merge ne fonctionne pas.
    Bonjour a tous !

    Je souhaite faire une requête avec condition sur une même table
    qui fait que soit je fais un update si la ligne existe sinon je fais un insert
    j'ai donc utilisé merge et voila ce que j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    MERGE INTO STOCK S1
      USING (SELECT * FROM STOCK WHERE  ID_AFFAIRE=15 AND NUM_ORDRE='xxxxxx') S2 
      ON (S1.ID_AFFAIRE = S2.ID_AFFAIRE AND S1.NUM_ORDRE = S2.NUM_ORDRE) 
      WHEN MATCHED THEN 
        UPDATE SET  S1.CLE_VERSION='xxxxxxxx'
      WHEN NOT MATCHED THEN 
        INSERT (S1.ID_AFFAIRE,S1.NUM_ORDRE) VALUES(15,'xxxxxxx')
    Quand j'ai une ligne l'update est ok par contre si j'ai pas de ligne l'insert ne se fait pas ça me met '0 rows merged'.

    Je suis un poil bloqué quelqu'un a une idée ?

    D'avance merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Merge permet de fusionner dans une table le résultat d'une autre table ou d'une requête.
    Si cette dernière ne renvoie rien, rien n'est fusionné et c'est parfaitement normal.

    Si vous voulez insérer / mettre à jour par rapport à des constantes, il faut faire votre sous-requête sur dual :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MERGE INTO STOCK S1
    USING (SELECT 15 as id_affaire,
                  'xxxxxx' as num_ordre,
                  'xxxxxxxx' as CLE_VERSION 
             FROM dual) S2 
       ON (S1.ID_AFFAIRE = S2.ID_AFFAIRE
      AND S1.NUM_ORDRE   = S2.NUM_ORDRE)
     WHEN MATCHED THEN UPDATE
      SET S1.CLE_VERSION = S2.CLE_VERSION
     WHEN NOT MATCHED THEN INSERT (S1.ID_AFFAIRE, S1.NUM_ORDRE)
          VALUES (S2.ID_AFFAIRE, S2.NUM_ORDRE);

Discussions similaires

  1. la publication de mon appli ne fonctionne pas
    Par tchecko dans le forum Accès aux données
    Réponses: 4
    Dernier message: 07/10/2006, 11h59
  2. Réponses: 1
    Dernier message: 30/08/2006, 19h00
  3. [VB.Net/DataReader] Pourquoi mon ExecuteReader ne fonctionne pas ?
    Par emeraudes dans le forum Accès aux données
    Réponses: 8
    Dernier message: 21/08/2006, 13h38
  4. Réponses: 14
    Dernier message: 17/08/2006, 10h29
  5. mon trigger ne fonctionne pas !
    Par japi33 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/03/2006, 21h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo