Methode zum Aufrufen einer gespeicherten SQL-Prozedur: Verwenden Sie CreateNativeQuery
P粉064448449
2023-09-02 00:10:01
<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>
我建议像这样使用
EntityManager#createStoredProcedureQuery
:我还没有使用它来获取实际结果,只是执行了一个过程。如果这个方法有效,请告诉我。