ORA-01795: リストに指定できる式の最大数は1000です。(⇒表関数によるコレクションのネスト解除)

最近、業務アプリのバグ解決要員として駆り出され、急がしい(泣)。やることは、それ以外にもあるのに。。。

とりあえず、メモ。
デバッグを実施していたら、「ORA-01795: リストに指定できる式の最大数は1000です。」と出た。

調べたら、有名なエラーのようだが、私は初見だった。

原因は、SQLのIN句に指定できるリストの要素数は1000まで*1であり、そこに1000以上の条件を指定していたこと。
Seasar2を使用して開発しており、S2DAOを使用してSQLの引数としてJavaのリストを渡している。そのリストの要素数が1000以上だった。

解決案としては、条件を1000個ずつに区切ってSQLを実行するくらいかな。。。

*1:少なくともORACLEの場合