3

Due to legacy reasons, we have a lot of code sitting under stored procedures. Similar to Spring data (@Procedure), is there a way in micronaut to call stored procedures. Do I have to inject entityManager and use CreateNamedStoredProcedureQuery().

    List<String> results = entityManager.createNamedStoredProcedureQuery("procedureA")
                .setParameter(0 , param1)
                .setParameter(0 , param2)
                 ....
                .setParameter(20 , param20)
                .getResultList();
Ashish Garg
  • 101
  • 1
  • 7

1 Answers1

0

Below code worked for me in micronaut for calling a StoredProcedure -

@Inject
private EntityManager em;

@Transactional
@Override
public int callSP(int num) {
    StoredProcedureQuery query = em.createStoredProcedureQuery("storelist.testSP1")
                                    .registerStoredProcedureParameter("InputInt", Integer.class, ParameterMode.IN)
                                    .registerStoredProcedureParameter("OutputInt", Integer.class, ParameterMode.OUT)
                                    .setParameter("InputInt", num);
    query.execute();
    Integer result = (Integer) query.getOutputParameterValue("OutputInt");
    
    return result;
}
V.Vidyasagar
  • 633
  • 6
  • 13