我在以下groovy上得到了java.lang.ArrayIndexOutOfBoundsException:-5。
问题似乎只发生在我使用带参数的嵌套选择时(如果我只使用参数或仅嵌套选择它可以工作,但不能同时使用)
conn.executeUpdate(
"UPDATE sc_commit_detail d1\n" +
"SET d1.commit_status = ?\n" +
"WHERE d1.sc_commit_detail_id IN (" +
"SELECT d2.sc_commit_detail_id " +
"FROM sc_commit_detail d2 " +
"WHERE d2.sc_commit_detail_id = 143661" +
")"
,['APPLIED'] )
在pl / sql中尝试了相同的查询,它确实有效。
请注意,这适用于代码(因为我不使用参数):
conn.executeUpdate(
"UPDATE sc_commit_detail d1\n" +
"SET d1.commit_status = 'APPLIED'\n" +
"WHERE d1.sc_commit_detail_id IN (" +
"SELECT d2.sc_commit_detail_id " +
"FROM sc_commit_detail d2 " +
"WHERE d2.sc_commit_detail_id = 143661" +
")"
)
还有这个(因为我不使用嵌套选择):
conn.executeUpdate(
"UPDATE sc_commit_detail d1\n" +
"SET d1.commit_status = ?\n" +
"WHERE d1.sc_commit_detail_id = 143661",
['APPLIED']
)
我做错了什么?
这是针对Oracle DB的,我简化了这个问题以显示问题,我必须同时使用嵌套和参数
答案 0 :(得分:0)
好的,所以我发现了问题,它实际上是jdbc7驱动程序版本12.1.0.2.0(以及其他一些版本)中的已知错误。
使用jdbc6版本11.2.0.2.0后,它可以工作(oracle论坛中有人遇到同样的问题,这个版本适用于他)