Oracle bindningsvariabler är en en-till-en-relation, så du behöver en definierad för varje värde du tänker inkludera i IN
klausul:
SELECT JOB
FROM EMP
WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)
Du måste också vara medveten om att Oracle IN
stöder bara maximalt 1 000 värden, annars får du:
Det bästa alternativet är att skapa en tabell (härledd, tillfällig, faktisk eller vy) och gå med i den för att få de värden du vill ha. 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