groovy executeUpdate抛出ArrayIndexOutOfBoundsException

时间:2017-07-13 11:17:57

标签: sql groovy

我在以下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的,我简化了这个问题以显示问题,我必须同时使用嵌套和参数

1 个答案:

答案 0 :(得分:0)

好的,所以我发现了问题,它实际上是jdbc7驱动程序版本12.1.0.2.0(以及其他一些版本)中的已知错误。

使用jdbc6版本11.2.0.2.0后,它可以工作(oracle论坛中有人遇到同样的问题,这个版本适用于他)