Le variabili di associazione Oracle sono una relazione uno-a-uno, quindi ne avresti bisogno di una definita per ogni valore che intendi includere nel IN
clausola:
SELECT JOB
FROM EMP
WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)
Devi anche essere consapevole che Oracle IN
supporta solo un massimo di 1.000 valori, altrimenti otterrai:
L'alternativa migliore è creare una tabella (derivata, temporanea, effettiva o vista) e unirvi ad essa per ottenere i valori desiderati. 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