Các biến liên kết của Oracle là mối quan hệ 1-1, vì vậy bạn cần một biến được xác định cho từng giá trị mà bạn định đưa vào IN
mệnh đề:
SELECT JOB
FROM EMP
WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)
Bạn cũng cần lưu ý rằng Oracle IN
chỉ hỗ trợ tối đa 1.000 giá trị hoặc bạn sẽ nhận được:
Cách thay thế tốt nhất là tạo một bảng (dẫn xuất, tạm thời, thực tế hoặc chế độ xem) và kết hợp với nó để nhận các giá trị bạn muốn. 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