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

Oracle Discussion :

[Oracle 9i]Insert or Update


Sujet :

Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut [Oracle 9i]Insert or Update
    Bonjour a tous,

    Je cherche a fair un petit scripte qui prend les donnée d'une table dans un schema A, et les insert dans une autre qui est dans un scheme B si elle ni sont pas sinon elle update juste les valeurs.

    J'ai donc plusieur question :

    1) Est ce qu'il existe une commande qui peut faire insert or update ou alors insert or replace?

    2) Si sa n'existe pas je pense fair un scripte PL/sql qui t'enterais l'insert et si sa marche pas il update mais existe t'il des fonction tel que is_possible ou is_true... Je suis desoler si je sort des enormité mais je suis plus habituer au langage de programation qu'aux langage de bdd.


    Merci a tous et bonne journée.

  2. #2
    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
    Citation Envoyé par wurzags
    1) Est ce qu'il existe une commande qui peut faire insert or update ou alors insert or replace?
    Regarde la commande merge (il y a des exemples sur le forum)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    Merci, je regarde pour le merge mais je trouve pas de guide vraiment explicite (bon je pense avoir compris comment sa marche)


    Mais apparament mon oracle 9i refuse d'executer se bout de code en invoquant la raison qu'il ne connais pas Merge...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    MERGE INTO Dest_calendrier D USING (select * from dest_calendrier where 
     
    Dest_ferme='01/01/01') S
     
    ON (D.dest_fermer=S.dest_ferme)
     
    WHEN MATCHED THEN UPDATE SET Dest_libelle ='test1'
     
    WHEN NOT MERGED THEN INSERT (DEST_FERME,DEST_LIBELLE)
     
    VALUES('1/1/1','test2');
    Et donc quand je fais ceci il m'affiche

    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
    16
    17
    18
    19
    20
     
     
    SQL> MERGE INTO Dest_calendrier D USING (select * from dest_calendrier where Dest_ferme='01/01/01') S
     
    SP2-0734: commande inconnue au début de "MERGE INTO..." - le reste de la ligne est ignoré.
     
    SQL> ON (D.dest_fermer=S.dest_ferme)
     
    SP2-0734: commande inconnue au début de "ON (D.dest..." - le reste de la ligne est ignoré.
     
    SQL> WHEN MATCHED THEN UPDATE SET Dest_libelle ='test1',
     
    SP2-0734: commande inconnue au début de "WHEN MATCH..." - le reste de la ligne est ignoré.
     
    SP2-0044: Pour la liste des commandes connues entrez HELP
    and et pour sortir EXIT.
     
    SQL> WHEN NOT MERGED THEN INSERT (DEST_FERME,DEST_LIBELLE) VALUES('1/1/1','test2');
     
    SP2-0734: commande inconnue au début de "WHEN NOT M..." - le reste de la ligne est ignoré.
    Voila voila alors si vous voyer l'erreur sa serais simpa de me la dire .

  4. #4
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHEN MATCHED THEN UPDATE SET Dest_libelle ='test1',
    C'est quoi cette virgule à la fin ???

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    Avec ou sans la virgule le résultat ne change pas Mais je vais quand meme supprimé la virgule. Merci de t'on aide et si tu a une autre idée n'hésita pas.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 134
    Par défaut
    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BEGIN
     
    merge ...
    ...
    ...
     
    END;
    /

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    Apparament sa ne marche pas non plus, si il fallais mettre begin et end c'est que mon code est faux, mais, je n'ai vu dans aucun des tutoriaux que j'ai lu qu'il mettais begin,End; avec les merge c'est normal?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MERGE INTO Dest_calendrier D USING (select * from dest_calendrier where Dest_ferme='01/01/01') S
          *
    ERREUR à la ligne 2 :
    ORA-06550: Ligne 2, colonne 7 :
    PLS-00103: Symbole "INTO" rencontré à la place d'un des symboles suivants :
    := . ( @ % ;

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 134
    Par défaut
    Non, effectivement il n'y a pas besoin du begin end, sorry.

    Par contre es-tu sûr que tu es bien en 9i ? car le merge n'existe pas en 8i.

  9. #9
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Citation Envoyé par wurzags
    Avec ou sans la virgule le résultat ne change pas Mais je vais quand meme supprimé la virgule. Merci de t'on aide et si tu a une autre idée n'hésita pas.
    Ben si il a changé... c'est plus la même erreur.

    D'après ta NOUVELLE erreur je dirais que MERGE est inconnu par ton Oracle... Bizarre.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    Oui je suis sous oracle 9i

  11. #11
    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
    Citation Envoyé par nuke_y
    D'après ta NOUVELLE erreur je dirais que MERGE est inconnu par ton Oracle... Bizarre.
    Je dirai plutôt par ta version de SQL*Plus étant donné que ce sont des messages SP2

    => quelle est ta version d'Oracle précisément ?
    => quelle est ta version de SQL*Plus ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    Nan l'autre résultat c'est quand je met les begin et le end... Mais quand j'ai enlever la virgule sa ma mis le meme résultat que précédement

  13. #13
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL> MERGE;
    MERGE
        *
    ERREUR Ó la ligne 1 :
    ORA-00925: missing INTO keyword
     
     
    SQL> MERCREDI;
    SP2-0042: commande inconnue "MERCREDI" - reste de la ligne ignoré.
    SQL> MERCREDI INTO blablablablablablablablablabla;
    SP2-0734: commande inconnue au dÚbut de "MERCREDI I..." - le reste de la ligne est ignoré.
    ---
    Je pense donc qu'effectivement ton SQL*Plus ne connaît pas MERGE.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Par défaut
    Bon alors, en fait après vérification par moi même j'ai la version 8i d'installé... pourtant l'icone Sqlplus est dans un répertoire 9i... Donc et bien je m'excuse de vous avoir embeter pour un bete problème de version que j'aurais pu corriger tous seul.

    Merci

  15. #15
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Attention, tu as probablement Oracle Client 9i mais la base, elle, est en 8i... de fait, c'est le moteur SQL 8i qui est utilisé

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/11/2009, 16h28
  2. performance delete/insert vs update
    Par Dionisos dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/08/2005, 18h23
  3. [Debutant] Insert ou update...
    Par kluh dans le forum Oracle
    Réponses: 15
    Dernier message: 13/07/2005, 14h35
  4. événement sur INSERT, DELETE, UPDATE
    Par papouAlain dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/12/2004, 15h40
  5. [Débutant][PS] modifier un insert en update
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/05/2004, 16h33

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