probleme de package/procedure
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:
Code:
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; |
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:
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; |
mais le package body ne marche pas, je ne comprend pas comment le structurer...
Code:
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-----------------------------------*/ |
Merci pour vos explications!
Parmis les erreurs retournées, il ne semble pas accepté mes paramètres...