2010-06-03 101 views
0

我正在写一些调用具有自定义对象返回类型的Oracle 11g PL/SQL过程的JDBC代码。我可以让代码调用该过程,但是如何访问返回的自定义对象以获取其包含的值?我的代码调用程序下面是一个例子:从ojdbc6 JDBC访问自定义对象返回类型JDBC驱动程序

PLSQL代码:

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

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); 

如何得到的结果回来氟里昂呢?

回答

1

我们已经破解了:

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); 

在我们的情况下,这个打印第三个元素在我们的自定义对象类型。