[英]How to call oracle stored procedure in spring using entity manager?
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;
Calling above procedure In Spring using below code使用以下代码在 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());
But I am getting an error.但我收到一个错误。
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
can any one help?有人可以帮忙吗?
I tried to duplicate your issue but I cannot, though I'm using Postgres instead of Oracle.我试图复制您的问题,但我不能,尽管我使用的是 Postgres 而不是 Oracle。 Just to be sure, can you do this instead:可以肯定的是,您可以这样做吗:
StoredProcedureQuery storedProcedure = findByYearProcedure
.registerStoredProcedureParameter(1, String.class, ParameterMode.IN)
.registerStoredProcedureParameter(2, Object.class,ParameterMode.REF_CURSOR);
.setParameter("Role", "admin");
Thanks谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.