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.