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

PL/SQL Oracle Discussion :

Importer les données d'une table dans une autre


Sujet :

PL/SQL Oracle

  1. #41
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    Même en enlevant le ; j'ai toujours la même erreur

  2. #42
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    Je pense que c'est bon mais je vous confirme ça dans un instant je pense que ça pas été bien compilé

  3. #43
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    En fait ça marche quand je l'exécute comme ça en dur mais si je la met dans une procédure j'ai une erreur

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    CREATE OR REPLACE PROCEDURE EXPORT
    IS
     
    MERGE INTO PPP_UPP D 
    USING
      (SELECT PER_NAM,PER_FNA,UPP_LOG,UPP_PWD,UPP_STA,UPP_INM,UPP_END,
              UPP_MEL,UPP_IPA,UPP_SST,UPP_PSS,TIT_KEY,CIV_KEY,AUD_KEY,
              UPP_PPW,UPP_DPW,UPP_TIC,UPP_SUD,UPP_INN,CPS_KEY,MAU_KEY,
              UPP_WWI,UPP_EXT,UPP_UPD,UPP_SGN,UPP_DAD,UPP_DAF,UPP_AMS
         FROM PPP_MAIN_TRANSFERT) S 
     
    ON (D.UPP_NAM = S.PER_NAM AND D.UPP_FNA = S.PER_FNA AND D.UPP_LOG = S.UPP_LOG)
     
    WHEN MATCHED THEN
        UPDATE 
        SET D.UPP_PWD = S.UPP_PWD, D.UPP_DAD = S.UPP_DAD, D.UPP_DAF = S.UPP_DAF, D.UPP_SGN = S.UPP_SGN,
            D.UPP_STA = S.UPP_STA, D.UPP_INM = S.UPP_INM, D.UPP_END = S.UPP_END, D.UPP_MEL = S.UPP_MEL,
            D.UPP_IPA = S.UPP_IPA, D.UPP_SST = S.UPP_SST, D.UPP_PSS = S.UPP_PSS, D.TIT_KEY = S.TIT_KEY,
            D.CIV_KEY = S.CIV_KEY, D.AUD_KEY = S.AUD_KEY, D.UPP_PPW = S.UPP_PPW, D.UPP_DPW = S.UPP_DPW,
            D.UPP_TIC = S.UPP_TIC, D.UPP_SUD = S.UPP_SUD, D.UPP_INN = S.UPP_INN, D.CPS_KEY = S.CPS_KEY,
            D.MAU_KEY = S.MAU_KEY, D.UPP_WWI = S.UPP_WWI, D.UPP_EXT = S.UPP_EXT, D.UPP_UPD = S.UPP_UPD,
            D.UPP_AMS = S.UPP_AMS
     
    WHEN NOT MATCHED THEN
     
    INSERT
      (
        UPP_NAM, UPP_FNA, UPP_LOG, UPP_PWD, UPP_STA, UPP_INM, UPP_END, 
        UPP_MEL, UPP_IPA, UPP_SST, UPP_PSS, TIT_KEY, CIV_KEY, AUD_KEY, 
        UPP_PPW, UPP_DPW, UPP_TIC, UPP_SUD, UPP_INN, CPS_KEY, MAU_KEY, 
        UPP_WWI, UPP_EXT, UPP_UPD, UPP_SGN, UPP_DAD, UPP_DAF, UPP_AMS
      )
    VALUES 
      (
        S.PER_NAM, S.PER_FNA, S.UPP_LOG, S.UPP_PWD, S.UPP_STA, S.UPP_INM, S.UPP_END, 
        S.UPP_MEL, S.UPP_IPA, S.UPP_SST, S.UPP_PSS, S.TIT_KEY, S.CIV_KEY, S.AUD_KEY, 
        S.UPP_PPW, S.UPP_DPW, S.UPP_TIC, S.UPP_SUD, S.UPP_INN, S.CPS_KEY, S.MAU_KEY, 
        S.UPP_WWI, S.UPP_EXT, S.UPP_UPD, S.UPP_SGN, S.UPP_DAD, S.UPP_DAF, S.UPP_AMS
      );
     
    COMMIT;
     
    END;
    Erreur(5,7): PLS-00103: Symbole "INTO" rencontré à la place d'un des symboles suivants : constant exception <identificateur> <identificateur entre guillemets> table LONG_ double ref char time timestamp interval date binary national character nchar

  4. #44
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Il manque un BEGIN dans le code

    un PLSQL

    c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BEGIN
     
    instruction ;
     
    END;
    voir la doc officielle gratuite

    http://download.oracle.com/docs/cd/B...htm#SQLRF01309

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Creating a Procedure: Example The following statement creates the procedure remove_emp in the schema hr. The PL/SQL is shown in italics:
     
    CREATE PROCEDURE remove_emp (employee_id NUMBER) AS
       tot_emps NUMBER;
       BEGIN
          DELETE FROM employees
          WHERE employees.employee_id = remove_emp.employee_id;
       tot_emps := tot_emps - 1;
       END;
    /

  5. #45
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    Je pense que je ne mérite pas qu'on m'aide à cause de mon manque d'attention il faudrait que je sois plus confiant plus concentré et moins stressé et il faudrait que je fasse des recherches plus approfondies avant de poser mes questions.

    Sinon merci à tous ! Vous êtes super !

  6. #46
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par Jinkas Voir le message
    Je pense que je ne mérite pas qu'on m'aide à cause de mon manque d'attention il faudrait que je sois plus confiant plus concentré et moins stressé et il faudrait que je fasse des recherches plus approfondies avant de poser mes questions.

    Sinon merci à tous ! Vous êtes super !
    There are no secrets to success. It is the result of preparation, hard work, and learning from failure.[Colin Powell]

    Il n'y a pas de miracle dans le succès . C'est le resultat de preparation, dur labeur et apprentissage des erreurs

  7. #47
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par fatsora Voir le message
    There are no secrets to success. It is the result of preparation, hard work, and learning from failure.[Colin Powell]

    Il n'y a pas de miracle dans le succès . C'est le resultat de preparation, dur labeur et apprentissage des erreurs

  8. #48
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    Encore moi mais cette fois j'ai une question plus intelligente. Tout fonctionne correctement mais en cas d'erreur sur l'insertion ou la mise à jour d'une ligne, le programme plante. Est-il possible de catcher l'erreur et de forcer l'insertion des autres lignes surtout que j'utilise la fonctione MERGE ?

    Re voici le code :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    create or replace
    PROCEDURE EXPORT
    IS
     
    BEGIN
     
    MERGE INTO PPP_UPP D 
    USING
      (SELECT PER_NAM,PER_FNA,UPP_LOG,UPP_PWD,UPP_STA,UPP_INM,UPP_END,
              UPP_MEL,UPP_IPA,UPP_SST,UPP_PSS,TIT_KEY,CIV_KEY,AUD_KEY,
              UPP_PPW,UPP_DPW,UPP_TIC,UPP_SUD,UPP_INN,CPS_KEY,MAU_KEY,
              UPP_WWI,UPP_EXT,UPP_UPD,UPP_SGN,UPP_DAD,UPP_DAF,UPP_AMS
         FROM PPP_MAIN_TRANSFERT) S 
     
    ON (D.UPP_NAM = S.PER_NAM AND D.UPP_FNA = S.PER_FNA AND D.UPP_LOG = S.UPP_LOG)
     
    WHEN MATCHED THEN
        UPDATE 
        SET D.UPP_PWD = S.UPP_PWD, D.UPP_DAD = S.UPP_DAD, D.UPP_DAF = S.UPP_DAF, D.UPP_SGN = S.UPP_SGN,
            D.UPP_STA = S.UPP_STA, D.UPP_INM = S.UPP_INM, D.UPP_END = S.UPP_END, D.UPP_MEL = S.UPP_MEL,
            D.UPP_IPA = S.UPP_IPA, D.UPP_SST = S.UPP_SST, D.UPP_PSS = S.UPP_PSS, D.TIT_KEY = S.TIT_KEY,
            D.CIV_KEY = S.CIV_KEY, D.AUD_KEY = S.AUD_KEY, D.UPP_PPW = S.UPP_PPW, D.UPP_DPW = S.UPP_DPW,
            D.UPP_TIC = S.UPP_TIC, D.UPP_SUD = S.UPP_SUD, D.UPP_INN = S.UPP_INN, D.CPS_KEY = S.CPS_KEY,
            D.MAU_KEY = S.MAU_KEY, D.UPP_WWI = S.UPP_WWI, D.UPP_EXT = S.UPP_EXT, D.UPP_UPD = S.UPP_UPD,
            D.UPP_AMS = S.UPP_AMS
     
    WHEN NOT MATCHED THEN
     
    INSERT
      (
        UPP_NAM, UPP_FNA, UPP_LOG, UPP_PWD, UPP_STA, UPP_INM, UPP_END, 
        UPP_MEL, UPP_IPA, UPP_SST, UPP_PSS, TIT_KEY, CIV_KEY, AUD_KEY, 
        UPP_PPW, UPP_DPW, UPP_TIC, UPP_SUD, UPP_INN, CPS_KEY, MAU_KEY, 
        UPP_WWI, UPP_EXT, UPP_UPD, UPP_SGN, UPP_DAD, UPP_DAF, UPP_AMS
      )
    VALUES 
      (
        S.PER_NAM, S.PER_FNA, S.UPP_LOG, S.UPP_PWD, S.UPP_STA, S.UPP_INM, S.UPP_END, 
        S.UPP_MEL, S.UPP_IPA, S.UPP_SST, S.UPP_PSS, S.TIT_KEY, S.CIV_KEY, S.AUD_KEY, 
        S.UPP_PPW, S.UPP_DPW, S.UPP_TIC, S.UPP_SUD, S.UPP_INN, S.CPS_KEY, S.MAU_KEY, 
        S.UPP_WWI, S.UPP_EXT, S.UPP_UPD, S.UPP_SGN, S.UPP_DAD, S.UPP_DAF, S.UPP_AMS
      );
     
    COMMIT;
     
    END;

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    L'idéal c'est d'éviter l'erreur

    Quelle est l'erreur en question ? Parce que si MERGE ne peut pas faire l'insertion, il y a peu de chance qu'INSERT y arrive

  10. #50
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    Pendant que le forum était en maintenance j'ai trouvé la solution. Je me suis servi de ce lien http://www.developpez.net/forums/d47...algre-erreure/

    La voici :

    1- tout d'abord créer une table gérant les erreurs oracle (spcécifique à oracle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      CREATE TABLE "ERRLOG" 
       (ORA_ERR_NUMBER$                 NUMBER,
     ORA_ERR_MESG$                   VARCHAR2(2000),
     ORA_ERR_ROWID$                  ROWID,
     ORA_ERR_OPTYP$                  VARCHAR2(2),
     ORA_ERR_TAG$                    VARCHAR2(2000)
    );
    ensuite le code

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    create or replace
    PROCEDURE EXPORT
    AS
     
    BEGIN
     
    DECLARE
    ERROR_VAR INTEGER;
    MY_SELECT VARCHAR(4000);
     
    	BEGIN
    		MY_SELECT := 'TRUNCATE TABLE ERRLOG';
    		EXECUTE IMMEDIATE(MY_SELECT);
     
    MERGE INTO table_destination D 
    USING
      (SELECT PER_NAM,PER_FNA,UPP_LOG,UPP_PWD,UPP_STA,UPP_INM,UPP_END,
              UPP_MEL,UPP_IPA,UPP_SST,UPP_PSS,TIT_KEY,CIV_KEY,AUD_KEY,
              UPP_PPW,UPP_DPW,UPP_TIC,UPP_SUD,UPP_INN,CPS_KEY,MAU_KEY,
              UPP_WWI,UPP_EXT,UPP_UPD,UPP_SGN,UPP_DAD,UPP_DAF,UPP_AMS
         FROM table_cible) S 
     
    ON (D.UPP_NAM = S.PER_NAM AND D.UPP_FNA = S.PER_FNA AND D.UPP_LOG = S.UPP_LOG)
     
    WHEN MATCHED THEN
        UPDATE 
        SET D.UPP_PWD = S.UPP_PWD, D.UPP_DAD = S.UPP_DAD, D.UPP_DAF = S.UPP_DAF, D.UPP_SGN = S.UPP_SGN,
            D.UPP_STA = S.UPP_STA, D.UPP_INM = S.UPP_INM, D.UPP_END = S.UPP_END, D.UPP_MEL = S.UPP_MEL,
            D.UPP_IPA = S.UPP_IPA, D.UPP_SST = S.UPP_SST, D.UPP_PSS = S.UPP_PSS, D.TIT_KEY = S.TIT_KEY,
            D.CIV_KEY = S.CIV_KEY, D.AUD_KEY = S.AUD_KEY, D.UPP_PPW = S.UPP_PPW, D.UPP_DPW = S.UPP_DPW,
            D.UPP_TIC = S.UPP_TIC, D.UPP_SUD = S.UPP_SUD, D.UPP_INN = S.UPP_INN, D.CPS_KEY = S.CPS_KEY,
            D.MAU_KEY = S.MAU_KEY, D.UPP_WWI = S.UPP_WWI, D.UPP_EXT = S.UPP_EXT, D.UPP_UPD = S.UPP_UPD,
            D.UPP_AMS = S.UPP_AMS
     
    WHEN NOT MATCHED THEN
     
    INSERT
      (
        UPP_NAM, UPP_FNA, UPP_LOG, UPP_PWD, UPP_STA, UPP_INM, UPP_END, 
        UPP_MEL, UPP_IPA, UPP_SST, UPP_PSS, TIT_KEY, CIV_KEY, AUD_KEY, 
        UPP_PPW, UPP_DPW, UPP_TIC, UPP_SUD, UPP_INN, CPS_KEY, MAU_KEY, 
        UPP_WWI, UPP_EXT, UPP_UPD, UPP_SGN, UPP_DAD, UPP_DAF, UPP_AMS
      )
    VALUES 
      (
        S.PER_NAM, S.PER_FNA, S.UPP_LOG, S.UPP_PWD, S.UPP_STA, S.UPP_INM, S.UPP_END, 
        S.UPP_MEL, S.UPP_IPA, S.UPP_SST, S.UPP_PSS, S.TIT_KEY, S.CIV_KEY, S.AUD_KEY, 
        S.UPP_PPW, S.UPP_DPW, S.UPP_TIC, S.UPP_SUD, S.UPP_INN, S.CPS_KEY, S.MAU_KEY, 
        S.UPP_WWI, S.UPP_EXT, S.UPP_UPD, S.UPP_SGN, S.UPP_DAD, S.UPP_DAF, S.UPP_AMS
      )
     
    LOG ERRORS INTO PPP_ERRLOG_TRANSFERT ('table_destination_MERGE_INSERT') REJECT LIMIT UNLIMITED; --permet de poursuivre malgré une erreure
     
    -- on teste si on a rencontré une erreure durant le merge
    MY_SELECT := 'SELECT COUNT(ORA_ERR_NUMBER$) FROM ERRLOG';
    EXECUTE IMMEDIATE(MY_SELECT) INTO ERROR_VAR;
    DBMS_OUTPUT.PUT_LINE(ERROR_VAR);
     
    IF ERROR_VAR = 0 
    Then 
    DBMS_OUTPUT.PUT_LINE('Aucune erreure');
    else
    DBMS_OUTPUT.PUT_LINE('Erreure trouvée'); 
    end IF;           
     
    END;
    COMMIT;
     
    END;

  11. #51
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    Je termine moins con que ce matin et merci à tous

  12. #52
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    En cas d'erreur j'aimerai pouvoir trouver la ou les lignes qui créent l'erreur ???

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    les lignes ne sont pas ordonnées dans une table. Il faut que tu stockes l'identifiant de ta ligne.

    Félicitations en tout cas, on voit que tu fais des efforts et que c'est payant

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. importer les noms de fichiers html dans une table access
    Par abane badis dans le forum Access
    Réponses: 3
    Dernier message: 14/11/2005, 17h25

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