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 :

MERGE : ORA-00969: mot-clé ON absent [11gR2]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut MERGE : ORA-00969: mot-clé ON absent
    Bonjour,

    Voici une requête MERGE :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MERGE INTO jefy_paye.paye_code pc
    USING 
    (
    	SELECT e.PCOD_CODE, e.PCOD_LIBELLE
    	FROM plemenager.parm_papaye_envt e
    ) tmp ON tmp.PCOD_CODE = pc.PCOD_CODE
    WHEN NOT MATCHED THEN
    	INSERT (PCOD_ORDRE, PCOD_CODE, PCOD_LIBELLE)
    	VALUES (jefy_paye.PAYE_CODE_SEQ.nextval(), tmp.PCOD_CODE, tmp.PCOD_LIBELLE);

    Réponse d'Oracle :
    Erreur à la ligne de commande: 6 Colonne: 3
    Rapport d'erreur -
    Erreur SQL : ORA-00969: mot-clé ON absent
    00969. 00000 - "missing ON keyword"
    Pourtant, il y est, le ON, non ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Parenthèse autour de la condition de jointure

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    La condition ON doit être encadrée de parenthèses...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ON (tmp.PCOD_CODE = pc.PCOD_CODE)
    Edit : grilled
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Pfff ! Oracle encore hors du standard SQL, si j'en crois le bouquin de Frédéric Brouard !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Maintenant, j'ai cette erreur :
    Erreur à la ligne de commande: 10 Colonne: 34
    Rapport d'erreur -
    Erreur SQL : ORA-02287: numéro de séquence non autorisé ici
    02287. 00000 - "sequence number not allowed here"
    *Cause: The specified sequence number (CURRVAL or NEXTVAL) is inappropriate
    here in the statement.
    *Action: Remove the sequence number.
    Je ne peux pas utiliser la séquence dans un MERGE ou j'ai mal écrit son utilisation ?

    EDIT : Sans les parenthèses derrière nextval, ça passe.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Pfff ! Oracle encore hors du standard SQL, si j'en crois le bouquin de Frédéric Brouard !
    Ce sont les multiples piègac... d'Oracle... Aucun prédicat du langage SQL ne nécessite de parenthèses. Le parenthésage n'est là que pour prioriser différemment l'ordre logique des membre des prédicats notamment en présence des connecteurs logiques OR et AND.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    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
    Pour le coup, le merge ici n'apporte rien par rapport à un simple insert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    insert into jefy_paye.paye_code (pcod_ordre, pcod_code, pcod_libelle)
    select jefy_paye.paye_code_seq.nextval
         , e.pcod_code
         , e.pcod_libelle
      from plemenager.parm_papaye_envt e
     where not exists (select null
                         from jefy_paye.paye_code pc
                        where pc.pcod_code = e.pcod_code);

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Pour le coup, le merge ici n'apporte rien par rapport à un simple insert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    insert into jefy_paye.paye_code (pcod_ordre, pcod_code, pcod_libelle)
    select jefy_paye.paye_code_seq.nextval
         , e.pcod_code
         , e.pcod_libelle
      from plemenager.parm_papaye_envt e
     where not exists (select null
                         from jefy_paye.paye_code pc
                        where pc.pcod_code = e.pcod_code);
    Certes mais comme j'ai aussi besoin d'un merge pour la seconde table à mettre à jour, c'était pour m'initier.
    Et puis en fait je pensais que j'avais besoin d'une mise à jour / ajout et en fait sur cette première table je n'avais besoin que d'un ajout.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Bonjour,

    Voici une requête MERGE :
    ...
    Pourtant, il y est, le ON, non ?
    Il vous sera utile de consulter la documentation d'Oracle quand vous est confronté avec ce type de problème, par exemple: Merge la diagramme de syntaxe indique la présence des parenthèses obligatoires.

    Ce n'est pas parce que vous avez une solution alternative que vous devez abandonner le Merge. Il se peut que les plans d'exécution et par conséquence les temps d'exécution aussi soit différentes.

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

Discussions similaires

  1. ORA-00926: mot-clé VALUES absent lors de l'insertion avec tOracleOutPut
    Par hikamovic dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 19/02/2015, 16h27
  2. erreur ORA 00905 : Mot clé absent sur un CASE WHEN
    Par gaijinma dans le forum PL/SQL
    Réponses: 2
    Dernier message: 01/07/2010, 14h32
  3. Réponses: 12
    Dernier message: 06/08/2009, 16h16
  4. ORA-00905: mot-clé absent
    Par sofuzion dans le forum SQL
    Réponses: 4
    Dernier message: 07/12/2008, 16h29
  5. ORA-00905: Mot-clé absent
    Par oraclinfo dans le forum Oracle
    Réponses: 2
    Dernier message: 19/09/2006, 14h11

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