Oracle-Bind-Variablen sind eine Eins-zu-Eins-Beziehung, daher müssten Sie für jeden Wert, den Sie in IN
aufnehmen möchten, eine definieren Klausel:
SELECT JOB
FROM EMP
WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)
Sie müssen sich auch darüber im Klaren sein, dass Oracle IN
unterstützt nur maximal 1.000 Werte, oder Sie erhalten:
Die beste Alternative besteht darin, eine Tabelle (abgeleitet, temporär, aktuell oder Ansicht) zu erstellen und mit ihr zu verknüpfen, um die gewünschten Werte zu erhalten. 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