次のGroovyでjava.lang.ArrayIndexOutOfBoundsException:-5を取得しています。私はgroovy executeUpdateがArrayIndexOutOfBoundsExceptionをスローする
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のためだ、と私は、問題を表示するには、この質問のためにそれを単純化し、私は、ネストされたので、私は問題は、それが実際にjdbc7ドライバのバージョン12.1での既知のバグです見つけ
代わりに ''使用 'のような名前のパラメータを指定してみてください。status'パラメータを '[status: 'APPLIED']として渡します。 –
全く同じエラーを試してみました –
自分の環境で正常に動作し、dbのレコードが更新されました。私は詳細が必要だと思う(コード、スタックトレース、バージョン情報、DB構造)。 –