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 :

Une Boucle imbriquée dans un curseur


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 115
    Points : 49
    Points
    49
    Par défaut Une Boucle imbriquée dans un curseur
    je dispose d'un curseur contenant les colonnes suivantes :

    Id_user , Annee , Date_debut,Date_fin par exemple :

    je veux bien parcourir les enregistrement par rapport à chaque collaborateur (alors en se basant sur la colonne Id_user )

    aprés pour chaque collaborateur il faut qu'on effectue un traitement pour chaque année (cette fois ci en se basant sur la colonne Annee ).


    ça doit fonctionner comme suite :

    Début : pour un collaborateur :

    Initialisation des données par exemple

    Début : pour chaque année

    traitement 1
    traitement 2
    traitement 3

    Fin : pour chaque année

    traitement 1
    traitement 2
    traitement 3


    Fin : pour chaque collaborateur

    je veux bien voir un pti exemple de parcours via une boucle imbriquée d'un curseur

    Merci pour votre aide

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    2 solutions :
    Soit tu fais 2 curseurs, soit 1 seul et tu testes le changement de user pour faire les traitements user.

    exemple 2 curseurs (c'est le moins performant vu que tu attaques 2 fois la table, mais le plus simple à coder)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    FOR ru IN (SELECT distinct id_user FROM MATABLE)
    LOOP
        FOR ra IN (SELECT annee, date_deb FROM MATABLE WHERE id_user = ru.id_user)
        LOOP
              traitements_annee(ra.annee, ra.date_deb);
        END LOOP;
     
       traitements_user(ru.id_user);
    END LOOP;
    Par 1 seul curseur
    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
    v_user := NULL;
    FOR r IN (SELECT id_user, annee, date_deb FROM MATABLE order by id_user, annee)
    LOOP
       IF v_user <> id_user -- Pas la première fois car v_user IS NULL
       THEN
           traitement_user(v_user); -- On fait le traitement avant d'entamer un nouveau user
        END IF;
         -- On mémorise le user courant
        v_user := r.id_user
        traitement_annee(r.annee, r.date_deb);
    END LOOP;
    -- Ne pas oublier de traiter le dernier user.
    traitement_user(v_user); 
    
    END IF;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/01/2013, 17h51
  2. selection de 2-uplet dans une boucle imbriquée
    Par nostress dans le forum Macro
    Réponses: 2
    Dernier message: 16/11/2009, 15h14
  3. afficher les données d'une Boucle imbriquée
    Par doria_serine dans le forum BIRT
    Réponses: 8
    Dernier message: 20/08/2009, 19h11
  4. Accélérer une boucle imbriquée
    Par Ulath0 dans le forum R
    Réponses: 1
    Dernier message: 06/08/2009, 10h30
  5. [MySQL] récupérer dans une boucle chaque information MySQL dans une variable différente
    Par gtenthorey dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2007, 22h34

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