Bonjour a tous, je débute sous java et malgré des recherches sur le net, je cale sur la facon de recuperer sous eclipse (java) un tableau de sortie d'une procedure stockée dans une base de données oracle 10g
voila la procédure stockée en question dans un package body:
voici mon paramètre de sortie tel que je l'ai déclaré. T1 est donc un record de 3 colonnes de type String. T2 est une table de T1 (J'espère ne pas trop ecorcher le vocabulaire adéquat !)
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 CREATE OR REPLACE PACKAGE BODY "AIREJAVA"."PACKA2J" AS PROCEDURE GROUPE_TITRE (ptitre varchar2, resultat out PACK_SPERENC.T2) is cursor C4 is select nomsong, nomgroupe, 'null' from ( select groupe.nomgroupe, oeuvre.nomsong from groupe join interpreter on groupe.nogroup=interpreter.nogroup join oeuvre on interpreter.nosong=oeuvre.nosong ) where nomsong like ptitre; i integer:=0; begin for VC4 in C4 loop resultat(i) := Vc4; /*DBMS_OUTPUT.PUT_LINE('RESULTAT'|| (i)||' '||Vc4.nomsong||' Groupe : '||Vc4.nomgroupe );*/ i:=i+1; end loop; END GROUPE_TITRE;
Je précise au passage que ce tableau est utilisé pour plusieures PS, c'est pourquoi il est constitué de 3 colonnes mais la PS vue plus haut comble la troisieme colonne par un 'null'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE OR REPLACE PACKAGE "AIREJAVA"."PACK_SPERENC" AS type T1 is RECORD ( STR1 rencontre.nomrencontre%type, STR2 tiers.nomtiers%type, STR3 specialite.nomspe%type ); type T2 is table of T1 index by binary_integer; END Pack_SpeRenc; /
Sous oracle, cela fonctionne, j'ai un tableau T2 qui se remplit.
Maintenant la partie java
Comme vous voyez, j'essai dans un premier temps d'executer la procedure sans meme recuperer ma sortie...mais j'ai un "numéro ou types d'arguments erronés dans appel à 'GROUPE_TITRE'"
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 conn = Connecter_oracle.connecter("10.105.41.28", "1521","XXX", "XXX", "XXX"); String toto2 = "{call airejava.PACKA2J.GROUPE_TITRE(?,?)}"; CallableStatement cs = conn.prepareCall (toto2); cs.setString(1, "Saludos copinos"); // a remplacer JcomboBox.getselectedItem cs.registerOutParameter(2,Types.ARRAY ); cs.execute();
A noter que lorsque je remplace mon tableau T2 dans pl/sql par un simple nvarchar2 ( resultat out nvarchar2), que j'adpate la code pour que les resultat soient tous concaténés les un aux autres dans cette variable résultat, j'arrive a la récuperer sous eclipse en changeant la fin du code par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 cs.setString(1, "Saludos copinos"); cs.registerOutParameter(2,Types.VARCHAR ); cs.execute(); String resultat = cs.getString(2); System.out.println(resultat);
Mon probleme est donc de recuperer un tableau, a priori, c'est pas ARRAY qu'il faut mettre! merci de m'avoir lu!
Partager