我正在使用camel 2.17.0并且必须使用SQL IN子句执行更新查询。查询是
update MY_TABLE set STATUS = :#status where ID in (:#in:ids) AND TYPE = :#type
我已将所有参数设置为camel标头,参数 ids 是List< Long>并且在执行期间列表中有四个元素。但是我得到了一个sql异常
PreparedStatementCallback; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; Number of parameters mismatch.
Expected: 6, was: 4; nested exception is java.sql.SQLException: Number of parameters mismatch. Expected: 6, was: 4
我不确定出了什么问题。当我硬编码除列表id的参数之外的所有值时,我能够更新表而没有任何错误。修改后的查询就像
update MY_TABLE set STATUS = 'SUCCESS' where ID in (:#in:corrIds) AND TYPE = 'type'
当我们使用IN子句时,是否有任何授权我们不能在查询中提供任何其他参数?请指教。
答案 0 :(得分:0)
对于in子句,您需要在2.18上更新。但是,通过使用2.17,只需将逗号分隔的字符串放入交换标头中。它将自动映射。
请注意使用此技术进行任何SQL注入。