in jest używany z collections , więc najpierw należy przekonwertować ciąg wejściowy na collection (poprzez podział na wiersze na podstawie przecinka)
Wypróbuj coś takiego
Select * from employ where id = 12 and org_id in (
SELECT decode(:input_id,null, (select employ.org_id from dual)
,TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)) )
FROM (SELECT :input_id temp FROM DUAL)
CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+')
)
przy okazji, ten org_id in () zwróci true jeśli :input_id jest null .
Inne podejście byłoby najpierw skonstruować całe zapytanie jako ciąg, a następnie wykonać je za pomocą execute immediate lub przez php . Może to jednak spowodować wstrzyknięcie sql
obawy.