Я пишу некоторый код JDBC, который вызывает процесс компиляции PL/SQL Oracle 11g с типом возврата пользовательского объекта. Всякий раз, когда я пытаюсь регистрировать свои возвращаемые типы, я получаю либо ORA-03115, либо PLS-00306 как ошибку, когда оператор выполняется в зависимости от установленного типа. Пример приведен ниже:Вызов процедуры Oracle PL/SQL с возвращаемыми типами пользовательского объекта из 0jdbc6 Драйверы JDBCthin
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, Эндрю
И как взломать, если параметры в пакете? –
Получил меня с капитализацией – Planky