Bonjour à tous !
Ca va faire bientôt deux journées que je tourne en rond sur ce pb et je commence naturellement à en avoir marre !
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 :
Jusque là OK.
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE OR REPLACE TYPE STRINGARRAY2 IS TABLE OF VARCHAR(64);
Voici la partie PL/SQL :
- le header du package en question :
- le body :
Code : Sélectionner tout - Visualiser dans une fenêtre à part PROCEDURE maProc (colEquip IN STRINGARRAY2);
La procédure ado_Add_Erreur ne fait qu'écrire dans une table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
J'utilise Java et JDBC pour me connecter à Oracle. Voici la partie Java :
La procédure s'exécute correctement, mais voila ce que je trouve dans la table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 4-- --1--4
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 !
Partager