2010-06-03 14 views
0

Je suis en train d'écrire du code JDBC qui appelle une procdure Oracle 11g PL/SQL qui a un type de retour Custom Object. Je peux obtenir le code pour appeler la procédure, mais comment puis-je accéder à l'objet personnalisé retourné pour obtenir ses valeurs contenues? Un exemple de mon code appelant la procédure est la suivante:Accès au type de retour d'objet personnalisé depuis ojdbc6 Pilotes minces JDBC

Code de PLSQL:

Procedure GetDataSummary (p_my_key IN KEYS.MY_KEY%TYPE, 
          p_recordset OUT data_summary_tab, 
          p_status OUT VARCHAR2); 

code Java:

String query = "begin manageroleviewdata.getdatasummary(?, ?, ?); end;"); 
CallableStatement stmt = conn.prepareCall(query); 

// Single IN parameter 
stmt.setInt(1, 83); 

// Two OUT parameters, one a Custom Object, the other a VARCHAR 
stmt.registerOutParameter(2, OracleTypes.ARRAY, "DATA_SUMMARY_TAB"); 
stmt.registerOutParameter(3, OracleTypes.VARCHAR); 

stmt.execute(stmt); 

Comment puis-je obtenir le résultat retour Fron cela?

Répondre

1

Nous avons craqué:

oracle.sql.ARRAY result2 = (oracle.sql.ARRAY) stmt.getObject(2); 
ResultSet rs = result2.getResultSet(); 
oracle.sql.STRUCT elements = (oracle.sql.STRUCT) rs.getObject(2); 
String result = null; 
if (elements != null) { 
    Object[] objs = elements.getAttributes(); 
    result = objs[2]; 
} 
System.out.println("Result: " + result); 

Dans notre cas, cela imprime le troisième élément de notre type d'objet personnalisé.