Я пишу некоторый код JDBC, который вызывает процедуру Oracle 11g PL / SQL, которая имеет тип возвращаемого значения Custom Object. Всякий раз, когда я пытаюсь зарегистрировать мои типы возврата, я получаю либо ORA-03115, либо PLS-00306 как ошибку, когда оператор выполняется в зависимости от установленного мной типа. Пример ниже:
Код PLSQL:
Procedure GetDataSummary (p_my_key IN KEYS.MY_KEY%TYPE,
p_recordset OUT data_summary_tab,
p_status OUT VARCHAR2);
Больше кода PLSQL (пользовательские данные объекта):
CREATE OR REPLACE TYPE data_summary_obj
AS
OBJECT (data_key NUMBER,
data_category VARCHAR2 (100),
sensitive_flag VARCHAR2 (1),
date_created DATE,
date_rep_received DATE,
date_first_offering DATE,
agency_data_ref VARCHAR2 (13),
change_code VARCHAR2 (120),
data_ref VARCHAR2 (50),
data_status VARCHAR2 (100),
data_count NUMBER)
/
CREATE OR REPLACE TYPE data_summary_tab AS TABLE OF data_summary_obj
/
Java-код:
String query = "begin manageroleviewdata.getdatasummary(?, ?, ?); end;");
CallableStatement stmt = conn.prepareCall(query);
stmt.setInt(1, 83);
stmt.registerOutParameter(2, OracleTypes.CURSOR); // Causes error: PLS-00306
stmt.registerOutParameter(3, OracleTypes.VARCHAR);
stmt.execute(stmt); // Error mentioned above thrown here.
Может ли кто-нибудь предоставить мне пример, показывающий, как я могу это сделать? Я думаю, это возможно. Однако я не вижу набор строк OracleType. CURSOR, REF, DATALINK и другие ошибки.
Извиняюсь, если это тупой вопрос. Я не эксперт по PL / SQL и, возможно, использовал неправильную терминологию в некоторых областях моего вопроса. (Если это так, пожалуйста, отредактируйте меня).
Заранее спасибо.
Regs, Andrew