Les variables de liaison Oracle sont une relation un à un, vous en aurez donc besoin d'une définie pour chaque valeur que vous avez l'intention d'inclure dans le IN
clause :
SELECT JOB
FROM EMP
WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)
Vous devez également savoir qu'Oracle IN
ne prend en charge qu'un maximum de 1 000 valeurs, sinon vous obtiendrez :
La meilleure alternative consiste à créer une table (dérivée, temporaire, réelle ou vue) et à la joindre pour obtenir les valeurs souhaitées. C'est-à-dire :
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