Variabel mengikat Oracle adalah hubungan satu-ke-satu, jadi Anda memerlukan satu yang ditentukan untuk setiap nilai yang ingin Anda sertakan dalam IN
klausa:
SELECT JOB
FROM EMP
WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)
Anda juga perlu menyadari bahwa Oracle IN
hanya mendukung maksimal 1.000 nilai, atau Anda akan mendapatkan:
Alternatif terbaik adalah membuat tabel (diturunkan, sementara, aktual, atau tampilan), dan bergabung dengannya untuk mendapatkan nilai yang Anda inginkan. yaitu:
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