You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot调用Oracle函数时Swagger日期传参与参数绑定报错如何解决

解决方案

1. 修复DAO层SQL参数分隔错误

报错的直接诱因是原生SQL中函数的三个参数占位符没有用逗号分隔,JPA把V_plant_config_num_id:p_start_date:p_stop_date整体识别为单个参数名,因此找不到你单独设置的三个参数。
修改OeeDao类中的SQL语句:

// 错误写法
"SELECT Z_OEE_A1AfterReworkRatio(:V_plant_config_num_id:p_start_date:p_stop_date) FROM DUAL"
// 正确写法
"SELECT Z_OEE_A1AfterReworkRatio(:V_plant_config_num_id, :p_start_date, :p_stop_date) FROM DUAL"

2. 适配01-apr-2021格式的日期入参

当前控制器用的是ISO标准日期格式(yyyy-MM-dd),要支持英文月份缩写的日期格式,修改控制器参数的@DateTimeFormat注解:

// 替换原有的@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
@DateTimeFormat(pattern = "dd-MMM-yyyy", locale = "en_US")

指定locale为en_US是为了正确识别英文月份缩写(比如apr对应四月)。

3. 补充函数所属包名(可选)

如果修改后出现函数不存在的报错,因为你的函数定义在MET.Z_PKG_OEE_NEW包下,需要在SQL中补充包名前缀:

SELECT MET.Z_PKG_OEE_NEW.Z_OEE_A1AfterReworkRatio(:V_plant_config_num_id, :p_start_date, :p_stop_date) FROM DUAL

内容的提问来源于stack exchange,提问作者Hakan özel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:24:03