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 :

Delete puis insert


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Par défaut Delete puis insert
    Bonjour,

    Novice total en PL/SQL, j'essaye de deleter le contenu d'un table avant d'y inserer de nouvelles données.
    Le pb est que quand j'exécute ma procédure, je constate que Oracle SQL developpeur m'ajoute les nouvelles données aux anciennes présentes dans la table sans faire le delete au préalable

    Quelqu'un pourrait m'aider SVP

    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
    create or replace PROCEDURE PROC_CIRCUITCADENCIER AS 
    BEGIN
     
    DELETE FROM CA_CIRCUIT ;
     
    COMMIT ;
     
    INSERT INTO CA_CIRCUIT (CODE_CIRCUIT, DATE_DEBUT,
    ID_PAYS, LIB_CIRCUIT, CODE_ENS, DATE_FIN) 
     
    SELECT S2.CODE_CIRCUIT, S2.DATE_APPLI, S2.ID_PAYS, 
    S1.LIB_CIRCUIT, S2.CODE_ENS, S2.DATE_FIN
     
    FROM (
    SELECT D.CODE_CIRCUIT, MAX(D.DATE_APPLI) DATE_APPLI, B.ID_PAYS ,
    C.CODE_ENS, A.DATE_FIN 
    FROM CL_CIRCUIT A, CL_CIRCUIT_PAYS B, CL_CIRCUIT_ENSEIGNE C, 
    CL_CIRCUIT_INFO D
    WHERE 
    D.ID_TYPE_CIRCUIT = '1'
    AND A.CODE_CIRCUIT = B.CODE_CIRCUIT
    AND B.CODE_CIRCUIT = C.CODE_CIRCUIT
    AND C.CODE_CIRCUIT = D.CODE_CIRCUIT
    AND C.CODE_ENS IN ('IM', 'DM', 'BT', 'BM')
    AND D.DATE_APPLI < (select trunc(sysdate) from dual)
    GROUP BY D.CODE_CIRCUIT,  B.ID_PAYS ,
    C.CODE_ENS, A.DATE_FIN)  S2, CL_CIRCUIT_INFO S1
     
    WHERE S2.CODE_CIRCUIT=S1.CODE_CIRCUIT
    AND S2.DATE_APPLI=S1.DATE_APPLI ;
     
     
    COMMIT ;

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Afin de ne pas charger la log inutilement, sauf si votre table contient très peu de lignes, il est préférable de faire un load à partir d'un fichier vide ou un truncate plutôt qu'un delete non qualifié
    Le load requiert des droits admin

  3. #3
    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
    Modifiez votre procédure pour ne la laisse faire que le delete suivi de commit en mettant en commentaire le reste du code. De cette manière vous allez vous convaincre que le delete se fait correctement.
    Il est une mauvaise habitude de programmation d'utiliser des tables normales à la manière que vous le fait: comme des tables temporaires. Utilisez plutôt des vraies tables temporaires d'Oracle ce qui vous apportera beaucoup des avantages.

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

Discussions similaires

  1. [Oracle] Découpage d'un fichier .txt puis insertion dans base mysql
    Par laetiheu dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 20/08/2016, 12h52
  2. [9i] ORA-01654 Delete puis insert table avec index bitmap
    Par Invité dans le forum SQL
    Réponses: 12
    Dernier message: 25/07/2013, 17h09
  3. [WORD] Creation de paragraphe puis insertion de celui-ci
    Par lejert dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/01/2009, 10h37
  4. Réponses: 2
    Dernier message: 01/10/2007, 13h24
  5. Modification table : ajout de colonne puis insertion data
    Par nkongolo.m dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/06/2006, 19h37

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