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 :

Mise à jour d'une table par procédure stockée


Sujet :

PL/SQL Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut Mise à jour d'une table par procédure stockée
    Bonjour tout le monde;
    j'ai une procédure stocké qui marche bien, 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
    48
    49
    create or replace procedure DeleteRecensementDiseVides is
     
    --*******************************DECLARATIONS DES VARIABLES***************************--    
     
        cursor CursorFlux is select FLUXRECENSEMENTDISE.ID FROM FLUXRECENSEMENTDISE;--curseur qui contient les id de la table FLUXRECENSEMENTDISE.
    	  cursor CursorRecensement is select RECENSEMENTDISE.NUMEROORDRE FROM RECENSEMENTDISE;--curseur qui contient les NUMERO D ORDRE de la table RECENSEMENTDISE.
        fluxType FLUXRECENSEMENTDISE.ID%type;
        recenesementType RECENSEMENTDISE.NUMEROORDRE%type;
        nbrEnregistrement number(5);
        incr NUMBER := 0;
     
    --**********************************DEBUT DE TRANSACTION*******************************--    
    begin
    dbms_output.enable();
    --*****************************SUPPRESSION DES FLUX N AYANT PAS D ABBONEOBS***********--
    --*******POUR CHAQUE FLUX QUI N A PAS D ABBONEOBS:************************************--
    --*******1:SUPPRIMER L ENREGISTREMENT DE LA TABLE ERREURRECENSEMENTDISE***************--
    --*******2:SUPPRIMER L ENREGISTREMENT DE LA TABLE ERREURLIGNE*************************--
    --*******3:SUPPRIMER L ENREGISTREMENT DE LA TABLE FLUXRECENSEMENTDISE*****************--
    loop
        open CursorFlux;
        loop
            fetch CursorFlux into fluxType;
            select count(*) into nbrEnregistrement FROM ABONNEOBS ABN where  ABN.FLUXRECENSEMENT =fluxType;
              IF nbrEnregistrement = 0 THEN
                 delete FROM ERREURRECENSEMENTDISE ERR WHERE ERR.FLUXRECENSEMENTDISE = fluxType;
                 delete from ERREURLIGNE ERR where ERR.FLUXRECENSEMENTDISE=fluxType;
                 delete FROM FLUXRECENSEMENTDISE WHERE FLUXRECENSEMENTDISE.ID = fluxType;
              END IF;
            exit when CursorFlux%notfound;
        END LOOP;
        close CursorFlux;
        commit ;
    --*******************************SUPPRESSION DES RECENSEMENT DISE N AYANT PAS DES FLUX*******-- 
       open CursorRecensement;
        loop
            fetch CursorRecensement into recenesementType;
            select count(*) into nbrEnregistrement FROM FLUXRECENSEMENTDISE flx where  flx.numeroordre =recenesementType;
              IF nbrEnregistrement = 0 THEN
                 delete FROM RECENSEMENTDISE rec WHERE rec.numeroordre =recenesementType ;
              END IF;
            exit when CursorRecensement%notfound;
        END LOOP;
        close CursorRecensement;
        commit ;
       incr:=incr+1;
       exit when incr>1;
    end loop;
    End ;
    Je veux ajouter le traitement suivant :

    Lorsque on exécute cette procédure (je la lance manuellement), je veux mettre à jour une colonne 'dateExécution' dans une table FREQUENCE, cette colonne doit prendre comme valeur la date de derniere exécution ,
    par exemple : si je lance la procédure le 01/12/2008 la colonne de la table frequence doit avoir la valeur 01/12/2008.

    merci de m'indiquer comment faire cela?
    par avance merci de votre aide.

  2. #2
    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
    bah... tu ajoutes l'ordre SQL ad hoc dans la procédure et puis c'est tout

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/09/2014, 17h14
  2. [AC-2010] Mise à jour d'une table avec le contenu d'une autre par recordset
    Par docjo dans le forum VBA Access
    Réponses: 4
    Dernier message: 16/01/2014, 18h30
  3. Erreur au niveau de la mise à jour d'une table Oracle par code VB
    Par lilas_violet dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/07/2010, 12h26
  4. Réponses: 4
    Dernier message: 12/03/2007, 16h14
  5. Réponses: 1
    Dernier message: 01/08/2006, 14h43

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