Доступ к типу возвращаемого пользовательского объекта из тонких драйверов JDBC ojdbc6 - PullRequest
0 голосов
/ 03 июня 2010

Я пишу некоторый код JDBC, который вызывает процедуру Oracle 11g PL / SQL, которая имеет тип возвращаемого значения Custom Object. Я могу получить код для вызова процедуры, но как мне получить доступ к возвращенному Custom Object, чтобы получить содержащиеся в нем значения? Пример моего кода, вызывающего процедуру, приведен ниже:

Код 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 Ответ

1 голос
/ 03 июня 2010

Мы взломали его:

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

В нашем случае это печатает третий элемент в нашем типе пользовательского объекта.

...