[JDBC][9i] Impossible de lire un tableau dans le PL/SQL...
Bonjour à tous ! :P
Ca va faire bientôt deux journées que je tourne en rond sur ce pb et je commence naturellement à en avoir marre ! :aie:
Je n'arrive pas à accéder aux éléments d'une liste passée en paramètre à une procédure stockée !!!
J'aimerais tout bêtement passer un tableau de String à une procédure stockée dans Oracle. Le tableau n'aura pas tout le temps la même longueur, donc j'ai créé un type nested table sur toute la base :
Code:
CREATE OR REPLACE TYPE STRINGARRAY2 IS TABLE OF VARCHAR(64);
Jusque là OK.
Voici la partie PL/SQL :
- le header du package en question :
Code:
PROCEDURE maProc (colEquip IN STRINGARRAY2);
- le body :
Code:
1 2 3 4 5 6 7
| PROCEDURE maProc (colEquip IN STRINGARRAY2) IS
BEGIN
Pck_Utilitaire.ado_Add_Erreur('ii',colEquip.COUNT||'-- '
||colEquip(colEquip.FIRST)||' --'||colEquip.FIRST||'--'
||colEquip.LAST,NULL,ERR_TRAITEMENT);
COMMIT;
END; |
La procédure ado_Add_Erreur ne fait qu'écrire dans une table.
J'utilise Java et JDBC pour me connecter à Oracle. Voici la partie Java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| /*j'initialise tout bien avant avec les classes Oracle et pas les génériques*/
String[] equip=new String[4];
equip[0]="coucou";
equip[1]="coicoi";
equip[2]="coacoa";
equip[3]="coecoe";
oracle.sql.ArrayDescriptor descriptor = oracle.sql.ArrayDescriptor.createDescriptor("STRINGARRAY2", con);
oracle.sql.ARRAY array = new ARRAY (descriptor, con, equip);
String sql="{call MON_SCHEMA.MON_PACKAGE.maProc(?)}";
OracleCallableStatement req=(OracleCallableStatement) con.prepareCall(sql);
req.setArray(1, array);
req.execute(); |
La procédure s'exécute correctement, mais voila ce que je trouve dans la table : En bref je n'arrive pas à accéder aux éléments de ma liste... J'ai essayé de boucler sur la liste, je n'arrive à accéder à aucun élément.
J'ai aussi testé en 8i et le comportement est le même...
J'ai loupé une étape dans l'initialisation ?
Vous voyez un problème quelque part ?
J'espère que j'ai été clair !
Merci d'avance !