フォームの大規模な条件に対してjOOQ統合テストを実行しています
WHERE x IN (:1, :2, :3, :4, ..., :3001, :3002)
上記の例は、条件に多くのバインド変数があることを示していIN
ます。Oracle には、IN 条件の括弧間の値 (バインド値またはインライン値) が 1000 というよく知られた制限があります。解決策は簡単です。次のように書くだけです。
WHERE x IN (:1, :2, :3, :4, ..., :1000) OR x IN (:1001, ...)
一方、Sybase ASE 15.5 と SQL Server 2008 R8 では、バインド値の数に全体的な制限があるようです。それぞれ、Sybase ASE では 2000、SQL Server では 2100 です。つまり、これら2つのデータベースのバインド値を使用して上記の条件を分割/変換する方法はないようです。すべてのバインド値をインライン化する以外に、その問題を回避する方法はありますか?