create or replace PROCEDURE TEST
(
Role IN VARCHAR2,
OUTPUT
OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN OUTPUT FOR
Select PC.PRODUCT_NAME,P.PARTNER_NAME
............
.............
WHERE PC.ROLE_NAME='POS_LEAD';
END TEST;
在Spring中使用以下代码调用上述存储过程
StoredProcedureQuery findByYearProcedure = entityManager.createStoredProcedureQuery("TEST");
StoredProcedureQuery storedProcedure = findByYearProcedure
.registerStoredProcedureParameter("Role", String.class, ParameterMode.IN)
.registerStoredProcedureParameter("SYS_REFCURSOR", Object.class,ParameterMode.REF_CURSOR);
.setParameter("Role", "admin");
System.out.println(storedProcedure.getResultList());
但我得到一个错误。
ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'TEST' ORA-06550: line 1, column 7: PL/SQL: Statement ignored
有谁能帮助我吗?
我试图重复你的问题,但我不能,虽然我使用Postgres而不是Oracle。 为了确定,你能不能用这个代替。
StoredProcedureQuery storedProcedure = findByYearProcedure
.registerStoredProcedureParameter(1, String.class, ParameterMode.IN)
.registerStoredProcedureParameter(2, Object.class,ParameterMode.REF_CURSOR);
.setParameter("Role", "admin");
谢谢你