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

Oracle Discussion :

Procédure classement championnat


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Par défaut Procédure classement championnat
    Bonjour tout le monde ,

    Aujourd'hui on a effectué un test gestion de base de données et je me suis planté dans une procédure très complexe si quelqu'un peut m'aider a résoudre ce problème : on doit écrire une procédure quand doit l'appeler plus tard dans un programme VB.net et pour cela on a la base suivante :
    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
     
    drop table participer;
    drop table marquer_but;
    drop table matchs;
    drop table joueur;
    drop table classement;
    drop table equipe;
     
     
    create table equipe (nom_equipe varchar2(254) primary key,ville varchar2(254));
     
    create table joueur(num_joueur number primary key ,nom_joueur varchar2(254),nationalite varchar2(254) ,nom_equipe varchar2(254)				
    					, constraint fk5 foreign key (nom_equipe)references equipe);
     
     
     
     
    create table matchs(id_match number primary key,num_journee number,date_match date,sl number,sv number,el varchar2(254),ev varchar2(254)  
    						 ,constraint fk6 foreign key (ev)references equipe(nom_equipe),
    						  constraint fk7 foreign key (el)references equipe(nom_equipe));
     
     
     
     
     
     
     
    create table participer (id_match number,num_joueur number,minute_debut number ,minute_fin number,
    						constraint pk1 primary key ( id_match,num_joueur),
    						constraint fk12 foreign key (id_match)references matchs(id_match),
    						constraint fk17 foreign key (num_joueur)references joueur(num_joueur));	
     
     
     
     
    create table marquer_but(id_match number,num_joueur number,minute_but number,
    						 primary key (id_match,minute_but,num_joueur),
    						 constraint fk13 foreign key (id_match)references matchs(id_match),
    						 constraint fk11 foreign key (num_joueur)references joueur(num_joueur));
     
     
     
     
    create table classement(nom_equipe varchar2(254) primary key,totalpoint number,rang number,
    			            constraint fk18 foreign key (nom_equipe)references equipe(nom_equipe));
    et on doit faire un Package dans le quel on doit créer une procédure que nous retourne le classement d'une journée envoyer comme paramètre pour moi voici ce que j'ai fait :

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    CREATE OR REPLACE PACKAGE curspkg_join AS 
            TYPE t_cursor IS REF CURSOR ; 
            Procedure classement (v_num_journee IN NUMBER, io_cursor IN OUT t_cursor); 	
       END curspkg_join;
       /
      CREATE OR REPLACE PACKAGE BODY curspkg_join AS 
     
    Procedure classement (v_num_journee IN NUMBER, io_cursor IN OUT t_cursor) 
       IS 
     v_cursor t_cursor;  
     
     cursor c_equipe is select * from equipe;
     cursor c_Match(v_nomeq equipe.nom_equipe%type) is select * from matchs where v_nomeq=el or v_nomeq=ev and v_num_journee = num_journee;
     cursor c_classement is select * from classement;
     
     v_point number;
     v_rang number;
     v_mem number;
    i integer;
    v_rang_precedent number;
    begin
     
         OPEN v_cursor FOR 
    		v_rang:=0;
    		v_mem:=0;
    		i:=1;
     
     for v_equipe in c_equipe
    	loop
    		v_point:=0;		
    		for v_matchs in c_Match(v_equipe.nom_equipe)
    			loop
    				if(v_matchs.el=v_equipe.nom_equipe)then
    					if(v_matchs.sl > v_matchs.sv)then
    						v_point:=v_point+3;
    					elsif(v_matchs.sl = v_matchs.sv)then
    						v_point:=v_point+1;
    					end if;
     
    				elsif(v_matchs.ev=v_equipe.nom_equipe)then
    				if(v_matchs.sl < v_matchs.sv)then
    						v_point:=v_point+3;
    					elsif(v_matchs.sl = v_matchs.sv)then
    					v_point:=v_point+1;
    					end if;	
     
    				end if;
    			for v_classement in c_classement
    				loop
    					v_rang:=i;
    					if v_classement.totalpoint =v_mem then
    						v_rang:=v_rang_precedent;
    					end if;
    						v_mem:=v_classement.totalpoint;
    						i:=i+1;
    						v_rang_precedent:=v_rang;
    				end loop;
     
    			end loop;
    	end loop;
    	io_cursor := v_cursor; 
    end classement;
     END curspkg_join;
    /
    malheureusement il crée le Package mais il me retourne une erreur dans la procédure que je l'ai pas trouvé!!!!!!!!!!

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Il faudrait indiquer le message d'erreur.

    Sinon, v_cursor n'est pas défini.

    Enfin, plutôt que des curseurs, procédez par SQL directement.

Discussions similaires

  1. [MySQL-5.5] Procédure stockée pour créer un classement
    Par JayenseN dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 29/03/2013, 17h34
  2. Requête SQL classement championnat de football
    Par micky86 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/11/2011, 23h45
  3. Réponses: 0
    Dernier message: 04/11/2011, 20h17
  4. Réponses: 1
    Dernier message: 04/06/2009, 11h21
  5. Classement des procédures stockées
    Par Alex01 dans le forum Administration
    Réponses: 4
    Dernier message: 16/05/2009, 09h52

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