in se používá s collections , takže váš vstupní řetězec by měl být nejprve převeden na collection (rozdělením do řádků na základě oddělovače čárkou)
Zkuste něco takového
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, '[^,]+')
)
mimochodem, toto org_id in () vrátí true if :input_id je null .
Jiný přístup by bylo nejprve sestavit celý dotaz jako řetězec a poté jej provést buď pomocí execute immediate nebo prostřednictvím php . To by však mohlo zvýšit vložení SQL
obavy.