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 :
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 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));
malheureusement il crée le Package mais il me retourne une erreur dans la procédure que je l'ai pas trouvé!!!!!!!!!!
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; /
Partager