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

Langage SQL Discussion :

Aide pour MERGE sous Oracle


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Par défaut Aide pour MERGE sous Oracle
    Bonjour à tous,

    J'aimerais faire un merge "conditionnel"
    Bref, je vous montre ce que j'aimerais faire par un exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    MERGE INTO dwh.merge_test_ec2 m2
        USING (select parcelid, hti, skp from dwh.merge_test_ec) m1
        ON (m1.parcelid = m2.parcelid) 
       WHEN MATCHED THEN 
       CASE m1.hti IS NULL THEN (update set m2.comm = 'htinull')
            m1.skp IS NULL THEN (update set m2.comm = 'skpnull')
            ELSE (update set m2.comm = 'other')
            END CASE
       WHEN NOT MATCHED THEN
            INSERT (m2.parcelid,m2.htid,m2.kpscannd)
            VALUES (m1.parcelid,m1.hti,m1.skp)
    Malheureusement, cela ne fonctionne pas.
    Peux t-on mettre d'autre commande qu'un update dans le WHEN MATCHED THEN ?
    Ou voyez-vous d'autre moyen ?
    J'ai cherché sur Google mais il n'y a pas foule d'exemples différents sur le net.

    Ceci reste un cas simple, que j'ai écrit pour tester ... au final ça devrait être qqchose de plus complexe ...

    D'avance merci.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Par défaut
    Merci pour le lien de la FAQ mais cela ne m'avance pas.

    Dans la faq => You can specify conditions to determine whether to update or insert into the target tables.

    Ok c'est la définition du MERGE mais j'aimerais ajouter un test conditionnel dans mon WHEN MATCHED THEN (update donc)

  4. #4
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Par défaut
    RE,

    comme vu dans la syntaxe sur orcacle.com, il n'y a pas de place pour un autre instruction qu'un update ...

    WHEN->MATCHED->THEN->UPDATE->SET->....


    Mmmm dommage, ça pourrait être utile un merge un peu plus étoffé ...
    Merci qd même

  5. #5
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MERGE INTO dwh.merge_test_ec2 m2
        USING (SELECT parcelid, hti, skp FROM dwh.merge_test_ec) m1
        ON (m1.parcelid = m2.parcelid) 
       WHEN MATCHED THEN 
       UPDATE SET m2.comm  = case when m1.hti IS NULL then 'htinull'
                                  when m1.skp IS NULL then 'skpnull'
                                  else 'other'
                             end case
       WHEN NOT MATCHED THEN
            INSERT (m2.parcelid,m2.htid,m2.kpscannd)
            VALUES (m1.parcelid,m1.hti,m1.skp)

Discussions similaires

  1. aide pour debutant sous oracle (date)
    Par trash_07 dans le forum Débuter
    Réponses: 3
    Dernier message: 22/03/2010, 16h19
  2. Commande MERGE sous ORACLE 9.2.0.6
    Par Cofondinde dans le forum Oracle
    Réponses: 5
    Dernier message: 19/07/2007, 19h42
  3. Aide pour Script sur Oracle
    Par Melusine21 dans le forum SQL
    Réponses: 21
    Dernier message: 12/07/2007, 14h43
  4. [VBA-E][débutant]aide pour macro sous excel
    Par julyBL dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 09/06/2006, 22h42
  5. Besoin d'aide pour une sous requete
    Par Celia1303 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 14h09

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