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 :

9i : problème avec MERGE INTO


Sujet :

SQL Oracle

  1. #1
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut 9i : problème avec MERGE INTO
    Salut,

    J'ai conçu un script qui génère des requêtes dynamiques dont le contenu n'est pas correctement exécuté ;(

    Voici un exemple de requête qui ne passe pas (execute immediate):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MERGE INTO E1XL1.CMPACTION d 
    USING (SELECT VERSION,COMPONENTNAME,ACTIONNAME,DESCRIPTION,ISCLOSE FROM E1XL0.CMPACTION) s 
    ON (d.VERSION=s.VERSION AND d.COMPONENTNAME=s.COMPONENTNAME AND d.ACTIONNAME=s.ACTIONNAME) 
    WHEN MATCHED THEN 
         UPDATE SET d.VERSION = s.VERSION,d.COMPONENTNAME = s.COMPONENTNAME,d.ACTIONNAME = s.ACTIONNAME,d.DESCRIPTION = s.DESCRIPTION,d.ISCLOSE = s.ISCLOSE 
    WHEN NOT MATCHED THEN 
         INSERT (d.VERSION,d.COMPONENTNAME,d.ACTIONNAME,d.DESCRIPTION,d.ISCLOSE) 
         VALUES (s.VERSION,s.COMPONENTNAME,s.ACTINNAME,s.DESCRIPTION,s.ISCLOSE)
    L'erreur est la suivante :

    ORA-00904: "D"."VERSION" : identificateur non valide
    il me souligne ça : "ON (d.VERSION"

    La table E1XL1.CMPACTION d contient forcément le champ VERSION puisque c'est du complètement dynamique, je génère les champs à partir de ALL_TAB_COLUMNS etc.

    Je suis quand même allé vérifier bien sûr.

    Je nage un peu, je pense que j'ai du mal comprendre MERGE INTO mais pourtant je fais tout pareil que dans l'exemple de psoug.org dispo à cette adresse :

    http://www.psoug.org/reference/merge.html

    Voilà, votre aide est la bienvenue
    a+
    seb

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    J'ai trouvé. Je suis vraiment vert, PL/SQL developer c'est vraiment de la ****

    En fait il m'a souligné d.version au niveau du "ON (" alors que c'était plus bas ...

    Le problème c'est que j'ai pas le droit de faire une update sur les champs de la PK dans la clause WHEN MATCHED THEN UPDATE ... du MERGE INTO.

    Vla l'erreur ... identificateur non valide :/ rien avoir avec la choucroute.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec inseret into
    Par freshman dans le forum Installation
    Réponses: 7
    Dernier message: 27/08/2007, 12h02
  2. Problème avec INSERT INTO
    Par Armaklan dans le forum Oracle
    Réponses: 3
    Dernier message: 28/02/2007, 11h15
  3. Problème avec REPLACE INTO
    Par Manu0086 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/02/2006, 12h14
  4. Réponses: 12
    Dernier message: 25/11/2005, 12h29
  5. Réponses: 3
    Dernier message: 10/05/2005, 11h02

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