我正在尝试调用一个返回输出游标 usign 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();
这一切都很好,但是,如果我尝试更改过程定义以将光标更改为第二个参数并在 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 时,输出游标是否应该始终是存储过程中的第一个参数?有解决方法吗?