IN-Listen lassen sich bei einer Oracle leider nicht als Bind-Var übergeben. Wirklich nicht ? Doch, geht mit Trick:
SELECT REGEXP_SUBSTR (:txt,'[^,]+',1,LEVEL) as token
FROM dual
CONNECT BY LEVEL <= LENGTH (:txt) - LENGTH (REPLACE (:txt, ',', '')) + 1
Durch den RegEx und das Connect by Prior macht die ORACLE eine Tabelle aus jedem Element, welches in :txt übergeben wird. Getrennt wird per “,”. Einsetzen lässt sich das ganze dann wie folgt:
SELECT * FROM emp WHERE emp_id IN (SELECT REGEXP_SUBSTR (:txt,'[^,]+',1,LEVEL) as token
FROM dual
CONNECT BY LEVEL <= LENGTH (:txt) - LENGTH (REPLACE (:txt, ',', '')) + 1)
Nicht schön, aber funktional; Und am performantesten von all’ den Workarounds, die ich bisher so gesehen habe.