ORAエラー

[ORAエラー] ORA-01795: リストに指定できる式の最大数は1000です。

投稿日:

以下のように表示されます。

(日本語)
ORA-01795: リストに指定できる式の最大数は1000です。
(英語)
ORA-01795: maximum number of expressions in a list is 1000 error

発生パターン

このエラーは以下のような場合に発生します。

  • IN句に値を1001個以上指定した
エラー例
SQL> SELECT * FROM mst_shohin WHERE shohincd IN (1,2,3 ... 999,1000,1001) / WHERE shohincd IN (1,2,3 ... 999,1000,1001) * 行2でエラーが発生しました。: ORA-01795: リストに指定できる式の最大数は1000です。

(1,2,3 ... 999,1000,1001)の箇所は、1~1001まで値が1001個指定してあると読み替えてください。

対処法

  • IN句に指定する値の個数を1000個以下にする
  • 可能であれば、EXIST句に書き換える

対処法1)IN句の値を1000個以下にする

SQL*Plus
SQL> SELECT * FROM mst_shohin WHERE shohincd IN (1,2,3 ... 999,1000) /

(1,2,3 ... 999,1000) の箇所は、1~1000まで値が1000個指定してあると読み替えてください。

対処法2)IN句の値を1000個以下で分割する

SQL*Plus
SQL> SELECT * FROM mst_shohin WHERE shohincd IN (1,2,3 ... 999,1000) OR shohincd IN (1001,1002 ... 1999,2000) /

(1,2,3 ... 999,1000)、(1001,1002 ... 1999,2000) の箇所は、それぞれ値が1000個指定してあると読み替えてください。

対処法3)EXIST句に書き換える

値が他のテーブルに存在する場合に使用できます。
EXIST句については以下記事をご覧ください。
[SQL] 副問い合わせの結果が存在する場合のみ検索対象とする(EXISTS)

備考

  • オラクルのIN句に指定できる値は最大1000個という制約があるので、必ず1000個以下にしなければなりません。
  • これは絶対的な制約なので、場合によってはプログラムの設計から変える必要があります。

スポンサーリンク

スポンサーリンク

-ORAエラー

執筆者:



comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

スポンサーリンク