OracleでSQLのIN句に1000個以上の要素を指定すると、
ORA-01795が発生する。
ORA-01795: maximum number of expressions in a list is 1000
(リストに指定できる式の最大数は1000です。)
調べてみれば何のことはないが、当時は知らなかったので予想もしていなかった。
表面上はDBアクセス
エラーとなっていて、ログを見てみると
ORA-01795と共に1画面まるごとSQLが表示されている状態だったので驚いた。
"普通は"IN句に要素を書き連ねるということはせず、テーブルの結合で書けるようなところだった。
この"普通は"というのが問題で、自分の周り(=テーブル構造とSQLをある程度理解している人)では当たり前のことに思えてしまうが、このSQLを書いたのは発注先の海外の企業で、ぼくらには当たり前のことが当たり前ではないようだった。
単純に突っ返してもよかったのだが、急いで修正する必要がありやり取りの時間を最小にするために、
エラーの原因と修正案を提示して修正させた。
...話が逸れそうなので一旦終わり。
関連リンク:
IN句に1000個以上の要素を指定できる?
テーマ:Oracle - ジャンル:コンピュータ
- 2008/01/31(木) |
- Oracle
-
| トラックバック:0
-
| コメント:0