Променливите за свързване на Oracle са връзка едно към едно, така че ще ви е необходима дефинирана за всяка стойност, която възнамерявате да включите в IN
клауза:
SELECT JOB
FROM EMP
WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)
Трябва също така да знаете, че Oracle IN
поддържа само максимум 1000 стойности или ще получите:
Най-добрата алтернатива е да създадете таблица (изведена, временна, действителна или изглед) и да се присъедините към нея, за да получите желаните стойности. 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