【问题标题】:How to call oracle stored procedure in spring using entity manager?如何使用实体管理器在spring中调用oracle存储过程?
【发布时间】:2020-09-19 20:13:05
【问题描述】:
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

有人可以帮忙吗?

【问题讨论】:

    标签: java spring stored-procedures oracle11g procedure


    【解决方案1】:

    我试图复制您的问题,但我不能,尽管我使用的是 Postgres 而不是 Oracle。只是为了确定,你可以这样做吗:

    StoredProcedureQuery storedProcedure = findByYearProcedure
                .registerStoredProcedureParameter(1, String.class, ParameterMode.IN)
                .registerStoredProcedureParameter(2, Object.class,ParameterMode.REF_CURSOR);
                .setParameter("Role", "admin");
    

    谢谢

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2015-08-15
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多