Oracle-bindingsvariabler er et en-til-en-forhold, så du skal have en defineret for hver værdi, du har til hensigt at inkludere i IN
klausul:
SELECT JOB
FROM EMP
WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)
Du skal også være opmærksom på, at Oracle IN
understøtter kun maksimalt 1.000 værdier, ellers får du:
Det bedste alternativ er at oprette en tabel (afledt, midlertidig, faktisk eller visning) og slutte sig til den for at få de værdier, du ønsker. 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