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 :

Explication LOOP PL/SQL


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 informatique
    Inscrit en
    Février 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 14
    Par défaut Explication LOOP PL/SQL
    Bonjour à tous,

    voilà ma situation, je me retrouve avec 2 tables, une contenant 2 500 000 d'entrées et l'autre un peu plus de 6 000 000. Afin d'avoir une meilleure vue d'ensemble de mes tables, j'ai décidé de créer une table historique reprenant les informations m'intéressant en les regrouppant par jour. J'ai créer les procédures d'insertion et tout fonctionne comme je le souhaite.

    Mon problème, j'aimerais remplir cette table historique avec les données de mes 2 tables dont les premières données remontent à 2008. Je suppose que je dois faire une boucle sur mes procédures en incrémentant la date quelque part ... Je me suis un peu renseigné sur le net et sur ce qu'il y avait moyen de faire avec des loops,.. Mais je suis complètement perdu car je n'ai jamais fait de PL/SQL mais que du SQL. Si quelqu'un pouvait m'éclairer ! Merci..

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2008
    Messages : 46
    Par défaut
    Pour demarrer :
    http://docs.oracle.com/cd/B19306_01/...b14261/toc.htm

    Et je crois qu'il y'a des tutos sur developpez.net


  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Pourquoi ne pas le faire en sql ?

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 14
    Par défaut
    Citation Envoyé par McM Voir le message
    Pourquoi ne pas le faire en sql ?
    On m'a dit que le Pl/Sql était plus rapide.. Et vu la masse d'informations que j'ai.. Et puis je n'ai jamais vraiment utiliser les boucles :/..

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    On m'a dit que le Pl/Sql était plus rapide..


    Fais la comparaison entre une boucle PL/SQL et une requête SQL ensembliste et ton discours changera

    Sinon ta solution est tout indiquée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO Histo
    (SELECT T1_Key1, T1_ch2, T2_zn1
    FROM table1, table2
    WHERE T1_Key1 = T2_Key2
    ...);

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    6.000.000 de lignes ce n'est pas forcément beaucoup.
    Essayez quand même le classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT /*+ APPEND */ INTO histo (cols)
    SELECT (cols)
      FROM courant;

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 14
    Par défaut
    Voilà ma requête d'insertion..

    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
     
    insert into s716_history_logging (date_day_dt,nbr_user_ramses,nbr_user_georamses,
    			nbr_user_forms,nbr_user_cassandra,nbr_user_mapin,user_id)
     
    select to_date(sysdate -1) Date_day,
           max(decode(applicationname,'Ramses',nbr)) Ramses,
           max(decode(applicationname,'GeoRamses',nbr)) GeoRamses,
           max(decode(applicationname,'GeoRamsesForms',nbr)) Forms,
           max(decode(applicationname,'Cassandra Intranet',nbr)) Cassandra,
           max(decode(applicationname,'Cassandra Business Corner',nbr)) Mapin,
           1 as user_id
    from
    	(
    		select count(distinct(username)) nbr,applicationname 
    		from s716_gis_logging_dev 
    		where to_date(time_dt)=to_date(sysdate -1)
          		      and upper(username) not like '%BAC%'
    		group by applicationname
     
    		union
     
    		select count(distinct(username)),'Ramses' as applicationname 
    		from s716_login_his_dev 
    		where to_date(login_time)=to_date(sysdate -1)
          		      and upper(username) not like '%BAC%'
    	)
    Elle fonctionne très bien.. Maintenant ma question était de savoir comment je pouvais boucler dessus afin qu'elle s'exécute pour chaque date différente qui existe dans les tables "logging" & "login" depuis le début (approximativement fin 2008)..

    Je pense créer une variable date que j'initialise à ma première date, je boucle dessus, je fais mes "INSERT", et j'incrémente d'un jour.. Jusqu'à aujd.. Mais je ne sais absolument pas le transcrire =/...

  8. #8
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 14
    Par défaut
    J'avais déjà trouvé ces informations mais je ne parviens pas à l'appliquer à mon cas ...

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

Discussions similaires

  1. Create table dans une loop PL/SQL
    Par neo.51 dans le forum PL/SQL
    Réponses: 5
    Dernier message: 04/03/2009, 10h59
  2. SQL LOADER - Explication
    Par Merzouk dans le forum SQL*Loader
    Réponses: 0
    Dernier message: 13/08/2007, 11h06
  3. loop while, for et sql
    Par rcmn dans le forum Général Python
    Réponses: 9
    Dernier message: 02/03/2007, 19h11
  4. explication sur quelques login sql server 2k
    Par Bba_M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/07/2006, 09h23

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