I am writing some JDBC code that invokes Oracle 11g PL / SQL processing, which has the type of the returned user object. Whenever I try to register my return types, I get either ORA-03115 or PLS-00306 as an error when the statement is executed depending on the type set. The following is an example:
PLSQL Code:
Procedure GetDataSummary (p_my_key IN KEYS.MY_KEY%TYPE,
p_recordset OUT data_summary_tab,
p_status OUT VARCHAR2);
More PLSQL code (custom object information):
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 Code:
String query = "begin manageroleviewdata.getdatasummary(?, ?, ?); end;");
CallableStatement stmt = conn.prepareCall(query);
stmt.setInt(1, 83);
stmt.registerOutParameter(2, OracleTypes.CURSOR);
stmt.registerOutParameter(3, OracleTypes.VARCHAR);
stmt.execute(stmt);
Can someone provide me an example showing how I can do this? I think it's possible. However, I do not see the OracleType rowset. CURSOR, REF, DATALINK, etc.
, . PL/SQL , , . ( , , ).
.
Regs, Andrew