Bonsoir, je débute sous pl/sql, on avance en cours à une sacrée vitesse et j'avoue avoir du mal a suivre certains principes malgré bcp d'heure passé le soir chez moi...
Pourriez vous m'éclaircir les idées et m'aider?
Voila dans un projet, je crée 4 procédures stockées qui possèdent des paramètre en entree et 1 paramètre en sortie, ce parametre de sortie est un tableau défini dans un package, il est commun a certaines de mes procédures...
les 4 requetes sont compilées et fonctionnent indépendamment.
J'aimerai réunir ces 4 procédures sous un seul package, je crois que c possible (package body si je ne me trompe pas). J'en ai d'ailleurs pas bien saisi l'intérêt mais le prof en a parlé donc bon... au moins par curiosité.
J'ai beau chercher sur le net la syntaxe, le package body est truffé d'erreur...
voila une de mes procédures:
Les autres procédures sont du même type, elles fonctionnent bien aussi, j'ai créé un premier package de cette forme qui est compilé
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 create or replace PROCEDURE "NBGROUPE_RENC" (NombreGroupe in integer, resultat out NUMERIC_STR.T2) as /*numeric_str.t2 est une table T2 defini ds le package NUMERIC_STR composé de 2 colonnes number et varchar*/ i integer:=1; cursor c2 is select nb_Groupe,nomrencontre from ( select nomrencontre, nb_Groupe from ( select count(distinct produire.nogroup) as nb_Groupe, produire.norencontre from produire group by produire.norencontre )Gre join rencontre on rencontre.norencontre=Gre.norencontre ) where nb_Groupe=NombreGroupe; begin for Vc2 in c2 loop resultat(i):=Vc2; i:=i+1; dbms_output.put_line('nb groupes : '||Vc2.nb_Groupe||' a la rencontre '||Vc2.nomrencontre); end loop; end;
mais le package body ne marche pas, je ne comprend pas comment le structurer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 create or replace PACKAGE essai aS PROCEDURE GROUPE_TITRE(ptitre varchar2, resultat out PACK_SPERENC2.T2 ); PROCEDURE "NBGROUPE_RENC" (NombreGroupe integer, resultat out NUMERIC_STR.T2); PROCEDURE "P1" (Pnomrencontre varchar2, resultat out NUMERIC_STR.T2); PROCEDURE "SPE_RENC" (PNomRenc varchar2, PSpe varchar2, resultat out PACK_SPERENC.T2 ); PROCEDURE "TITRE_RENC" (Ptitre varchar2, resultat out PACK_SPERENC2.T2); FUNCTION FDATE (Pdate timestamp) RETURN varchar2; end essai;
Merci pour vos explications!
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 create or replace PACKAGE BODY essai aS PROCEDURE GROUPE_TITRE (ptitre in varchar2, resultat out PACK_SPERENC2.T2 ) is cursor C4 is select nomsong, nomgroupe from ( /*--------------------------------etc-----------------------------------*/ END GROUPE_TITRE; PROCEDURE NBGROUPE_RENC (NombreGroupe integer, resultat NUMERIC_STR.T2) as i integer:=1; /*--------------------------------etc-----------------------------------*/
Parmis les erreurs retournées, il ne semble pas accepté mes paramètres...
Partager