Heim  >  Fragen und Antworten  >  Hauptteil

Methode zum Aufrufen einer gespeicherten SQL-Prozedur: Verwenden Sie CreateNativeQuery

<p>Meine gespeicherte SQL-Prozedur enthält zwei Abfragen und ich möchte die gespeicherte Prozedur aus meinem Java-Code aufrufen. Ich habe den folgenden Code ausprobiert, aber er gibt nur die Ergebnisliste der ersten Abfrage in der gespeicherten Prozedur zurück. </p> <pre class="brush:php;toolbar:false;">Query query = em.createNativeQuery("{call VoucherRedemption(?,?,?)}"); query.setParameter(1, loginWorkSpaceId); query.setParameter(2, startDate); query.setParameter(3, endDate); List<Object[]> results = query.getResultList();</pre> <p>Die gespeicherte Prozedur lautet wie folgt:</p> <pre class="brush:php;toolbar:false;">CREATE PROCEDURE `cer`.`voucherRedemption`(IN workspaceId int(10), IN startDate VARCHAR(30), IN endDate VARCHAR(30)) BEGINNEN Wählen Sie w.ws_name als wsName,str_to_date(startDate, '%Y-%m-%d') als startDate,str_to_date(endDate, '%Y-%m-%d') als endDate aus from workspace w where w.ws_id = workspaceId; Wählen Sie Money.*,Money.paidAmount + Money.PrepaidAmount - Money.ClientCost,Programs.Programs from program; END</pre></p>
P粉064448449P粉064448449415 Tage vor574

Antworte allen(1)Ich werde antworten

  • P粉124070451

    P粉1240704512023-09-02 11:48:11

    我建议像这样使用EntityManager#createStoredProcedureQuery

    StoredProcedureQuery query = em.createStoredProcedureQuery("voucherRedemption");
    query.registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN);
    query.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
    query.registerStoredProcedureParameter(3, String.class, ParameterMode.IN);
    query.setParameter(1, loggedinWorkSpaceId);
    query.setParameter(2, startDate);
    query.setParameter(3, endDate);
    List<Object[]> results = query.getResultList();
    

    我还没有使用它来获取实际结果,只是执行了一个过程。如果这个方法有效,请告诉我。

    Antwort
    0
  • StornierenAntwort