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 :

Curseur ou procédure imbriqué


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Novembre 2006
    Messages : 79
    Points : 54
    Points
    54
    Par défaut Curseur ou procédure imbriqué
    Bonjour

    Je cherche désespérément à créer un curseur Conso_Ville_Annee_CUR qui dépend de la valeur d'un seconde curseur Conso_Par_Ville_CUR , pour réussir ma procédure

    J'ai une erreur sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cursor Conso_Ville_Annee_CUR is 
    	SELECT SUM(Achats.QTE) AS ConsoParAnnee, Extract(Year FROM DAT) As Annee
    	FROM Achats 
    	WHERE Achats.NV=NumVin
    	AND Achats.Lieu = Conso_Par_Ville_CUR.Lieu
    	GROUP BY Achats.Lieu, Extract(Year FROM DAT);
    Je suis obligé d'imbriquer les curseurs, car sinon la boucle du curseur par année m'affiche pour chaque ville les consommations par année de la 1ere ville

    A moins qu'il faille utiliser des procédures imbriquées ...

    ci-dessous la procédure complète
    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
     
    SET SERVEROUTPUT ON
    EXECUTE dbms_output.enable(1000000);
     
     
    CREATE OR REPLACE PROCEDURE StatsVins (NumVin Vins.NV%type)  AS
     
     
    cursor Conso_Par_Ville_CUR is 
    	SELECT  Achats.Lieu As Ville, SUM(Achats.QTE) AS ConsoTotale
            FROM Achats
            WHERE Achats.NV = NumVin
    	GROUP BY  Lieu 
    	ORDER BY ConsoTotale; 
     
     
    cursor Conso_Ville_Annee_CUR is 
    	SELECT SUM(Achats.QTE) AS ConsoParAnnee, Extract(Year FROM DAT) As Annee
    	FROM Achats 
    	WHERE Achats.NV=NumVin
    	AND Achats.Lieu = Conso_Par_Ville_CUR.Lieu
    	GROUP BY Achats.Lieu, Extract(Year FROM DAT);
    	end loop;
    BEGIN     
    	--open Conso_Par_Ville_CUR;
    	dbms_output.new_line;
    	dbms_output.put_line('Vente de vins numero ' || NumVin);
    	for Conso_Par_Ville_Ligne in Conso_Par_Ville_CUR loop
    	dbms_output.new_line;
           	dbms_output.put_line('	Par ville : ' ||  Conso_Par_Ville_Ligne.Ville  || ' (' || Conso_Par_Ville_Ligne.ConsoTotale || 'b)');
     
    			--open Conso_Ville_Annee_CUR;
     
     
     
    			for Conso_Ville_Annee_CUR_Ligne in  Conso_Ville_Annee_CUR loop
    			dbms_output.new_line;
           		dbms_output.put_line('		Par annee : ' ||Conso_Ville_Annee_CUR_Ligne.Annee   || ' :' || Conso_Ville_Annee_CUR_Ligne.ConsoParAnnee );
       			end loop;
    			--close Conso_Ville_Annee_CUR;
       	end loop;
     	--close Conso_Par_Ville_CUR;
    END;
    /
    execute StatsVins(12);

  2. #2
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Une simple requête devrait suffire.
    Dans votre procédure le deuxième curseur devrait soit être paramétré soit référencer une variable déclaré avant et valoriser par le premier curseur. Mais essayez de suivre plutôt mon premier conseil.

Discussions similaires

  1. problème de procédure imbriquée
    Par ballantine's dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/01/2008, 16h55
  2. [ASE]Syntaxe curseur sur procédure stockée
    Par tosprou dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 18/09/2007, 14h39
  3. Curseur sur procédure stockée
    Par djnos dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/04/2007, 09h17
  4. [PL/SQL] Procédures imbriquées
    Par dcollart dans le forum Oracle
    Réponses: 16
    Dernier message: 10/07/2006, 16h12
  5. Procédures stockées imbriquées SQL Server
    Par Mike69 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/10/2003, 10h31

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