in
används med collections
, så din inmatningssträng bör först konverteras till collection
(genom att dela upp i rader, baserat på kommaavgränsare)
Prova något sånt här
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, '[^,]+')
)
förresten, detta org_id in ()
returnerar true
om :input_id
är null
.
Ett annat tillvägagångssätt skulle vara att konstruera hela frågan som en sträng först och sedan köra den antingen med execute immediate
eller genom php
. Detta kan dock öka sql-injektion
bekymmer.