Oracleバインド変数は1対1の関係であるため、IN
に含める値ごとに1つ定義する必要があります。 条項:
SELECT JOB
FROM EMP
WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)
OracleのIN
にも注意する必要があります 最大1,000個の値のみをサポートします。そうでない場合は、次のようになります。
最良の代替方法は、テーブル(派生、一時、実際、またはビュー)を作成し、それに結合して必要な値を取得することです。 IE:
SELECT a.job
FROM EMP a
JOIN (SELECT :JOB1 AS col FROM DUAL
UNION ALL
SELECT :JOB2 FROM DUAL
UNION ALL
SELECT :JOB3 FROM DUAL
UNION ALL
...
UNION ALL
SELECT :JOB3000 FROM DUAL) b ON b.col = a.job