Récuperation des Object types oracle via Java

Fermé
oskay - 12 mai 2015 à 16:16
Bonjour,
j'ai un souci lors de l'appel d'un objet oracle depuis mon code java via une procédure stockée.mon code n'arrive pas à me retourner les variables de type chaîne de caractère et au contraire j'ai des "????" au lieu de la variable varchar ou string.

mon exemple d'objet et le suivant :

CREATE OR REPLACE TYPE t_demo_object AS OBJECT (
some_number NUMBER,
some_string varchar2(32)
)

CREATE OR REPLACE TYPE t_number_table IS TABLE OF NUMBER;

mon cote java est simple :

final String typeName = "T_DEMO_OBJECT";
final String typeTableName = "T_DEMO_OBJECTS";

final StructDescriptor structDescriptor = StructDescriptor.createDescriptor(typeName.toUpperCase(), connection);
final ResultSetMetaData metaData = structDescriptor.getMetaData();

CallableStatement cs = connection.prepareCall("{call p_generate_demo_objects(?, ?)}");
cs.setInt(1, 5);
cs.registerOutParameter(2, Types.ARRAY, typeTableName);
cs.execute();

Object[] data = (Object[]) ((Array) cs.getObject(2)).getArray();
for(Object tmp : data) {
Struct row = (Struct) tmp;
int idx = 1;
for(Object attribute : row.getAttributes()) {
System.out.println(metaData.getColumnName(idx) + " = " + attribute+" " );
++idx;
}
System.out.println("---");
}
cs.close();
connection.close();
}


lors de l'execution de mon programme j'ai ce retour :

SOME_NUMBER = 1
SOME_STRING = ???
---


est ce que vous pouvez m'aider svp !!!!
A voir également: