カスタムオブジェクトの戻り型を持つOracle11gPL/SQLプロシージャを呼び出すJDBCコードを作成しています。戻り型を登録しようとすると、設定した型に応じてステートメントを実行すると、エラーとして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