in
wordt gebruikt met collections
, dus uw invoerreeks moet eerst worden geconverteerd naar collection
(door op te breken in rijen, gebaseerd op komma scheidingsteken)
Probeer zoiets als dit
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, '[^,]+')
)
trouwens, deze org_id in ()
retourneert true
if :input_id
is null
.
Een andere benadering zou zijn om de hele query eerst als een tekenreeks te construeren en deze vervolgens uit te voeren met execute immediate
of via php
. Dit kan echter leiden tot sql-injectie
bedenkingen.