Rumah  >  Soal Jawab  >  teks badan

Kaedah untuk memanggil prosedur tersimpan SQL: gunakan CreateNativeQuery

<p>Prosedur tersimpan SQL saya mengandungi dua pertanyaan dan saya mahu memanggil prosedur tersimpan daripada kod Java saya. Saya mencuba kod di bawah tetapi ia hanya mengembalikan senarai hasil pertanyaan pertama dalam prosedur tersimpan. </p> <pre class="brush:php;toolbar:false;">Query query = em.createNativeQuery("{call voucherRedemption(?,?,?)}"); query.setParameter(1, log masukWorkSpaceId); query.setParameter(2, startDate); query.setParameter(3, endDate); Senaraikan<Objek[]> hasil = query.getResultList();</pre> <p>Prosedur yang disimpan adalah seperti berikut:</p> <pre class="brush:php;toolbar:false;">BUAT PROSEDUR `cer`.`VoucherRedemption`(IN workspaceId int(10), IN startDate VARCHAR(30), DALAM tarikh akhir VARCHAR(30)) BERMULA pilih w.ws_name sebagai wsName,str_to_date(startDate, '%Y-%m-%d') sebagai startDate,str_to_date(endDate, '%Y-%m-%d') sebagai endDate dari ruang kerja w di mana w.ws_id = workspaceId; pilih wang.*,money.paidAmount + money.prepaidAmount - money.clientCost,programs.programs daripada program; END</pre></p>
P粉064448449P粉064448449415 hari yang lalu577

membalas semua(1)saya akan balas

  • P粉124070451

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

    Saya syorkan menggunakannya seperti ini 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();
    

    Saya tidak menggunakannya untuk mendapatkan hasil sebenar, hanya melakukan satu proses. Jika ini berkesan, sila beritahu saya.

    balas
    0
  • Batalbalas