在调用 Oracle 存储过程的时候,提示有参数错误。
错误信息如下:
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: call OSSEZ_APP.PKG_CACHE_REFRESH_AIP.INS_CACHE_STATUS( ?, )
后来发现这是一个非常愚蠢的错误。
在上面的参数列表中,我们看到 ? 后面有个逗号,说明我们在给定参数的时候不正确。
后来发现不正确的原因居然是
<insert id="UPDATE_KAFKA_CACHE_STATUS" statementType="CALLABLE">
call OSSEZ.CACHE_STATUS(
#{kafkaCacheStatusList, mode=IN, jdbcType=ARRAY},
#{callStatus, mode=OUT, jdbcType=VARCHAR}
)
</insert>
上面的语句中的 OUT 后面多了一个逗号。
所以在 MyBatis 调用存储过程的时候,你需要注意的参数配置,在 IN / OUT 参数的最后一个参数中,不能随意添加一个逗号。