Methode zum Aufrufen einer gespeicherten SQL-Prozedur: Verwenden Sie CreateNativeQuery
P粉064448449
P粉064448449 2023-09-02 00:10:01
0
1
653
<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粉064448449
P粉064448449

Antworte allen(1)
P粉124070451

我建议像这样使用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();

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage