MyBatis 调用 Oracle 的存储过程有参数错误

在调用 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 参数的最后一个参数中,不能随意添加一个逗号。