Hello

J'ai un soucis avec des requêtes préformatées dans une base oracle10g, nommée astucieusement servic...

Dans ma classe de connexion, j'ai le test donnée dans la FAQ pour donner la liste des requêtes préformatées de la connexion, et j'y retrouve une requête tout simple, que j'ai nommé LISTE_EMPLOYE, et que j'ai créer ainsi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
create or replace package gestion as
type cur_empl is ref cursor;
procedure liste_employe (le_affect in number, ma_liste out cur_empl);
end;
Ensuite, je lance
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
create or replace package body gestion as
procedure liste_employe (le_affect in number, ma_liste out cur_empl) as
rec_service service%rowtype;
message varchar2(250);
begin
set transaction read only;
if le_affect = 0 then
open ma_liste for select nuempl, nomempl, hebdo, 
		(select sum(duree) from travail where nuempl = employe.nuempl) as sumduree,
		affect, (select nomserv from service where nuserv = affect) as nomaffect
from employe order by nomempl, 6;
else
select * into rec_service from service where nuserv = le_affect;
open ma_liste for select nuempl, nomempl, hebdo,
	(select sum(duree) from travail where nuempl = employe.nuempl) as sumduree,
	affect, (select nomserv from service where nuserv = affect) as nomaffect
from employe where affect = le_affect order by nomempl;
end if;
commit;	
exception
when no_data_found then
	rollback;
	raise_application_error(-20002,'le service '||le_affect||' n existe pas');
when others then
	message := 'sqlcode : '||sqlcode||' '||substr(sqlerrm,1,200);
	rollback; 	
	raise_application_error (-20999,'erreur inattendue : '||message);	
end;
end;
Blablabla je définis ma procédure quoi.

J'ai ensuite testée ma connexion, elle existe. Si je fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
boolean rs = statement.execute("SELECT * FROM EMPLOYE");
Et que je m'occupe du resultSet sortant, j'obtiens bien le contenu console de la table.

Je teste ensuite la callable statement par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CallableStatement ps_select_Employes;
ps_select_Employes = conn.prepareCall (" { call gestion.LISTE_EMPLOYE(?,?)}"); 
ps_select_Employes.setInt(1,num); //num est a passer en param dans les arguments de la méthode
ps_select_Employes.registerOutParameter(2,OracleTypes.CURSOR);
ps_select_Employes.execute();
System.out.println("machin a afficher")
Et le "machin à afficher" n'arrive jamais...

Je précise que quand je fais le test de la FAQ pour connaitre les différentes procédures stockées, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
######################################
Nom (procedure) = LISTE_EMPLOYE
Type = ne renvoie pas de résultat
Normal, pas normal ?

Merci de votre aide