次のように、JPAを使用して出力カーソルを返すOracleストアドプロシージャを呼び出そうとしています
create or replace PROCEDURE stored_proc(ret_cursor OUT sys_refcursor, inputParam IN NUMBER)
-- body
END stored_proc;
@Entity
@NamedNativeQuery(name = "callStoredProc",
resultClass = Result.class,
query = "{call stored_proc(?,:inputParam)}",
callable = true,
readOnly=true
)
public class Result{
// map the result set params.
}
//JPA code to get result set
List<Result> resultList = getEntityManager().createNamedQuery("callStoredProc")
.setParameter("inputParam", inputParam)
.getResultList();
これはすべて正常に機能しますが、プロシージャ定義を変更してカーソルを2番目のパラメーターとして変更し、対応するパラメーターをJPAコードでも変更しようとすると、機能しません。エラーが発生します
[4/30/12 11:42:30:505 CDT] 00000025 SystemErr R 原因: java.sql.SQLException: ORA-06550: 行 1、列 7: PLS-00306: 呼び出しの引数の数または型が正しくありません'stored_proc'
create or replace PROCEDURE stored_proc(inputParam IN NUMBER,ret_cursor OUT sys_refcursor)
JPAを使用する場合、出力カーソルは常にストアドプロシージャの最初のパラメータにする必要がありますか? 回避策はありますか?