recherche

Maison  >  Questions et réponses  >  le corps du texte

Méthode pour appeler une procédure stockée SQL : utilisez CreateNativeQuery

<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>
P粉064448449P粉064448449508 Il y a quelques jours663

répondre à tous(1)je répondrai

  • P粉124070451

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

    Je recommande de l'utiliser comme ceci 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();
    

    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.

    répondre
    0
  • Annulerrépondre