oracle database - Spring data Jpa Entity Manager call stored procedure passing not all input parameters - Stack Overflow

admin2025-05-02  0

A stored procedure is declared which takes 8 parameters as given below

PROCEDURE PR_DYN_LISTVAL(P_REF_NO     NUMBER,
                           P_SERV_ID    VARCHAR2,
                           P_TYPE       VARCHAR2,
                           P_MIN_ROW    VARCHAR2 DEFAULT NULL,
                           P_MAX_ROW    VARCHAR2 DEFAULT NULL,
                           P_SUCCESS_YN OUT NUMBER,
                           P_FLAG       OUT SYS_REFCURSOR,
                           P_OUT        OUT SYS_REFCURSOR);

I am calling the above procedure using entitymanager in spring data jpa but is not required to set all the parameters

 StoredProcedureQuery  storedProcedureQuery= entityManager.createStoredProcedureQuery("PGIPK_ONLINE_FULFILMENT.PR_DYN_LISTVAL",Integer.class, Object.class, Object.class);
    storedProcedureQuery.registerStoredProcedureParameter("P_REF_NO",Integer.class,ParameterMode.IN);
    storedProcedureQuery.registerStoredProcedureParameter("P_SERV_ID",String.class,ParameterMode.IN);
    storedProcedureQuery.registerStoredProcedureParameter("P_TYPE",String.class,ParameterMode.IN);
    storedProcedureQuery.registerStoredProcedureParameter("P_SUCCESS_YN",Integer.class,ParameterMode.OUT);
    storedProcedureQuery.registerStoredProcedureParameter("P_FLAG",Object.class,ParameterMode.REF_CURSOR);
    storedProcedureQuery.registerStoredProcedureParameter("P_OUT",Object.class,ParameterMode.REF_CURSOR);

    storedProcedureQuery.setParameter("P_REF_NO",1943499);
    storedProcedureQuery.setParameter("P_SERV_ID","GET_SECURITY_DEVICES");
    storedProcedureQuery.setParameter("P_TYPE","List");

    boolean result=storedProcedureQuery.execute();
    Integer success= (Integer) storedProcedureQuery.getOutputParameterValue("P_SUCCESS_YN");

I am getting an error

{call PGIPK_ONLINE_FULFILMENT.PR_DYN_LISTVAL(?,?,?,?,?,?,?)}, Error Message = ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'PR_DYN_LISTVAL'

How to ensure that a correct procedure call is made with limited input params only. The db being used is Oracle.

转载请注明原文地址:http://anycun.com/QandA/1746122820a91989.html