Passer un UDT en paramètre d'une procédure stockée
Bonjour,
Depuis mon programme Java, je souhaite pouvoir passer une classe à une procédure stockée PL/SQL.
Je me suis inspiré de cet exemple .
Ma classe main
Code:
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
public class Main {
public static void main(String args[]) throws ClassNotFoundException {
java.sql.Connection conn = null;
try {
conn = JDBCUtil.getDBConnection();
CallableStatement statement;
String sql;
Array array;
// mise en place du mapping
java.util.Map map = conn.getTypeMap();
map.put("SchemaName.PERSONNE", Class.forName("Personne"));
conn.setTypeMap(map);
Personne perso = new Personne();
perso.setAge(44);
perso.setNom("Toto");
perso.setPrenom("Titi");
sql = "{? = call PK_BDUWS_RNCPS.COLLECT_DCP(?)}";
System.out.println("\n"+sql);
statement = conn.prepareCall(sql);
statement.registerOutParameter(1, Types.ARRAY, "T_RESULTAT_UNIT_TAB");
statement.setObject(2, perso);
statement.execute();
array = statement.getArray(1);
ArrayList<ResultatUnit> lst;
try {
lst = mapResultatUnitTab(array);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
statement.close();
} catch(SQLException s) {
System.out.println(s);
} finally {
if(conn != null) {
try {
conn.close();
} catch(SQLException ignore) {}
}
}
} |
Et lorsque je l’exécute, j'obtiens ceci :
Citation:
{? = call PK_BDUWS_RNCPS.COLLECT_DCP(?)}
java.sql.SQLException: Echec de construction du descripteur: Invalid arguments
Avez vous une idée de ce qui pose problème ?
Merci pour votre aide
Korno