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 :

Instruction MERGE


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Instruction MERGE
    Tout d'abord bonjour à tous.

    Voilà j'ai lu le tres bon tuto se trouvant sur
    http://oracle.developpez.com/faq/?page=3-1#merge

    mais voilà même avec ce support j'ai le problème suivant :
    J'essaie de faire fonctionner la requete suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MERGE INTO SOLP
          USING (SELECT SYSDATE,DA_JOUR, NO_CTR, 0, 0, NVL(MT_SLD_JOUR,0), 0
        FROM ESPE) T_ESP
             ON (SOLP.NO_CTR = T_ESP.NO_CTR) 
     
        WHEN MATCHED THEN 
          UPDATE SET SOLP.MT_ESPECE=NVL(T_ESP.MT_SLD_JOUR,0), SOLP.DA_IMP_FIC = SYSDATE, SOLP.DA_ARRETE=T_ESP.DA_JOUR, SOLP.FL_UPDATED=1
     
        WHEN NOT MATCHED THEN 
          INSERT (SOLP.DA_IMP_FIC,SOLP.DA_ARRETE, SOLP.NO_CTR, SOLP.MT_TITRE_FERME, SOLP.MT_TITRE_SRD , SOLP.MT_ESPECE, SOLP.MT_LIQUID, SOLP.FL_UPDATED) VALUES (SYSDATE,DA_JOUR, T_ESP.NO_CTR, 0, 0, NVL(MT_SLD_JOUR,0), 0,1);
    Mais à la compile il me dis que j'ai une colonne définis de façon ambigue... Bon je sais ce que normalement ca veut dire donc j'ai préfixé tous mes champs avec le nom de leur table mais rien n'y change. Il me donne l'erreur sur l'instruction Quelqu'un aurait il une idée ???

    Merci !

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    (SELECT SYSDATE, da_jour, no_ctr, 0, 0,
                     NVL (mt_sld_jour, 0) mt_sld_jour, 0
                FROM espe)
    au lieu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    (SELECT SYSDATE, da_jour, no_ctr, 0, 0,
                     NVL (mt_sld_jour, 0) , 0
                FROM espe)
    Essaie ce code.


    Salim.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    MERGE INTO solp
       USING (SELECT SYSDATE, da_jour, no_ctr, 0, 0,
                     NVL (mt_sld_jour, 0) mt_sld_jour, 0
                FROM espe) t_esp
       ON (solp.no_ctr = t_esp.no_ctr)
       WHEN MATCHED THEN
          UPDATE
             SET solp.mt_espece = t_esp.mt_sld_jour,
                 solp.da_imp_fic = SYSDATE, solp.da_arrete = t_esp.da_jour,
                 solp.fl_updated = 1
       WHEN NOT MATCHED THEN
          INSERT (da_imp_fic, da_arrete, no_ctr, mt_titre_ferme, mt_titre_srd,
                  mt_espece, mt_liquid, fl_updated)
          VALUES (SYSDATE, t_esp.da_jour, t_esp.no_ctr, 0, 0, t_esp.mt_sld_jour, 0, 1);

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    nope... Toujours pareil ! En tout cas merci d'essayer de m'aider !!!

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Pas besoin de mettre les constantes dans le USING, elles posaient probablement des problèmes de noms de colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MERGE INTO solp
       USING (SELECT da_jour, no_ctr, NVL(mt_sld_jour, 0) as mt_sld_jour
                FROM espe) t_esp
       ON (solp.no_ctr = t_esp.no_ctr)
       WHEN MATCHED THEN
          UPDATE
             SET solp.mt_espece = t_esp.mt_sld_jour,
                 solp.da_imp_fic = sysdate,
                 solp.da_arrete = t_esp.da_jour,
                 solp.fl_updated = 1
       WHEN NOT MATCHED THEN
          INSERT (da_imp_fic, da_arrete, no_ctr, mt_titre_ferme, mt_titre_srd,
                  mt_espece, mt_liquid, fl_updated)
          VALUES (sysdate, t_esp.da_jour, t_esp.no_ctr, 0, 0, t_esp.mt_sld_jour, 0, 1);
    Vous êtes en quelle version ?

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bonjour tout le monde !

    MERCI ! Cela fonctionne effectivement !

    Je suis sur une base 10.1.0.5.

    Euh pour information cette instruction était dans un bloc PL/SQL mais je ne pense pas que cela avait une incidence...


    Merci encore pour votre aide...

Discussions similaires

  1. [11g] MERGE WHEN NOT MATCHED en une seule instruction ?
    Par ctobini dans le forum SQL
    Réponses: 4
    Dernier message: 07/08/2014, 14h59
  2. Instruction Merge dans code
    Par bourbe dans le forum Débutez
    Réponses: 4
    Dernier message: 27/08/2013, 16h20
  3. Utilisation de l'instruction MERGE
    Par merlubreizh dans le forum DB2
    Réponses: 11
    Dernier message: 12/09/2012, 16h16
  4. Réponses: 0
    Dernier message: 28/01/2009, 12h32
  5. Réponses: 4
    Dernier message: 07/01/2009, 17h34

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