Méthode pour appeler une procédure stockée SQL : utilisez CreateNativeQuery
P粉064448449
2023-09-02 00:10:01
<p>Ma procédure stockée SQL contient deux requêtes et je souhaite appeler la procédure stockée à partir de mon code Java.
J'ai essayé le code ci-dessous mais il renvoie uniquement la liste des résultats de la première requête de la procédure stockée. </p>
<pre class="brush:php;toolbar:false;">Query query = em.createNativeQuery("{call voucherRedemption(?,?,?)}");
query.setParameter(1, connectéWorkSpaceId);
query.setParameter(2, startDate);
query.setParameter(3, endDate);
Liste<Object[]> résultats = query.getResultList();</pre>
<p>La procédure stockée est la suivante :</p>
<pre class="brush:php;toolbar:false;">CRÉER UNE PROCÉDURE `cer`.`voucherRedemption`(IN workspaceId int(10), IN startDate VARCHAR(30),
DANS date de fin VARCHAR(30))
COMMENCER
sélectionnez w.ws_name comme wsName, str_to_date(startDate, '%Y-%m-%d') comme startDate, str_to_date(endDate, '%Y-%m-%d') comme endDate
depuis l'espace de travail w où w.ws_id = workspaceId ;
sélectionnez money.*,money.paidAmount + money.prepaidAmount - money.clientCost,programs.programs
du programme ; FIN</pre></p>
Je recommande de l'utiliser comme ceci
EntityManager#createStoredProcedureQuery
:Je ne l'ai pas utilisé pour obtenir des résultats réels, j'ai juste effectué un processus. Si cela fonctionne, faites-le-moi savoir.