调用SQL存储过程的方法:使用CreateNativeQuery
P粉064448449
P粉064448449 2023-09-02 00:10:01
[MySQL讨论组]

我的SQL存储过程包含两个查询,我想从我的Java代码中调用该存储过程。 我尝试了下面的代码,但它只返回存储过程中的第一个查询的结果列表。

Query query = em.createNativeQuery("{call voucherRedemption(?,?,?)}");
    query.setParameter(1, loggedinWorkSpaceId);
    query.setParameter(2, startDate);
    query.setParameter(3, endDate);
    List<Object[]> results = query.getResultList();

存储过程如下:

CREATE PROCEDURE `cer`.`voucherRedemption`(IN workspaceId int(10), IN  startDate VARCHAR(30),
    IN endDate VARCHAR(30))
BEGIN
select w.ws_name as wsName,str_to_date(startDate, '%Y-%m-%d') as startDate,str_to_date(endDate, '%Y-%m-%d') as endDate 
from  workspace w where w.ws_id = workspaceId;

select money.*,money.paidAmount + money.prepaidAmount - money.clientCost,programs.programs
from program;   END

P粉064448449
P粉064448449

全部回复(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();

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号