我从下面的代码调用名为PRC_HB_EMP_SP1的存储过程,它给出了预期的输出。
Session session = HibernateUtil.getSessionFactory().openSession();
Query query = session.getNamedQuery("PRC_HB_EMP_SP1");
query.setParameter("IN_EMPID",empId);
但是,当我用下面的代码调用相同的程序时
Query query1 = session.createSQLQuery("CALL PRC_HB_EMP_SP1(?,:IN_EMPID)").addEntity(Employee.class);
query1.setParameter("IN_EMPID",empId);
它给我一个像
这样的错误 org.hibernate.QueryException: Expected positional parameter count: 1, actual parameters: [] [CALL PRC_HB_EMP_SP1(?,:IN_EMPID)]
这背后的原因是什么?我在网上搜索,我知道这是paramateres的问题,但这个sp有两个参数。第一个是输出参数,第二个是输入参数
属
create or replace PROCEDURE PRC_HB_EMP_SP1
(
Out_value OUT SYS_REFCURSOR,
IN_EMPID NUMBER
)
AS
BEGIN
open Out_value for
SELECT EMPID,EMPNAME,ADDRESS,SALARY,EMPAGE
FROM EMPLOYEE
WHERE EMPLOYEE.EMPID = IN_EMPID;
END PRC_HB_EMP_SP1;
答案 0 :(得分:0)
我经历了同样的情况。我尝试了另一种方式......
而是在存储过程中使用out参数,修改如下所示的过程
create or replace PROCEDURE PRC_HB_EMP_SP1
(
IN_EMPID NUMBER
)
AS
BEGIN
open Out_value for
SELECT EMPID,EMPNAME,ADDRESS,SALARY,EMPAGE
FROM EMPLOYEE
WHERE EMPLOYEE.EMPID = IN_EMPID;
select Out_value;
END PRC_HB_EMP_SP1;
现在,
Query query1 = session.createSQLQuery("CALL PRC_HB_EMP_SP1(:IN_EMPID)").addEntity(Employee.class);
query1.setParameter("IN_EMPID",empId);
并使用
获取您的值列表res = query1.list(); 的System.out.println( “结果” + res.get(0));