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 :
Ensuite, je lance
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;
Blablabla je définis ma procédure quoi.
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;
J'ai ensuite testée ma connexion, elle existe. Si je fais un
Et que je m'occupe du resultSet sortant, j'obtiens bien le contenu console de la table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part boolean rs = statement.execute("SELECT * FROM EMPLOYE");
Je teste ensuite la callable statement par
Et le "machin à afficher" n'arrive jamais...
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")
Je précise que quand je fais le test de la FAQ pour connaitre les différentes procédures stockées, j'ai :
Normal, pas normal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ###################################### Nom (procedure) = LISTE_EMPLOYE Type = ne renvoie pas de résultat
Merci de votre aide![]()
Partager