in est utilisé avec les collections , donc votre chaîne d'entrée doit d'abord être convertie en collection (en divisant les lignes, en se basant sur le séparateur virgule)
Essayez quelque chose comme ça
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, '[^,]+')
)
au fait, ce org_id in () renverra true si :input_id est null .
Une autre approche serait de construire d'abord la requête entière sous forme de chaîne, puis de l'exécuter soit avec execute immediate ou via php . Cependant, cela pourrait augmenter l'l'injection SQL
préoccupations.