in
bruges sammen med collections
, så din inputstreng bør først konverteres til collection
(ved at opdele i rækker, baseret på kommaafgrænser)
Prøv noget som dette
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, '[^,]+')
)
forresten, dette org_id in ()
vil returnere true
hvis :input_id
er null
.
En anden tilgang ville være at konstruere hele forespørgslen som en streng først og derefter udføre den enten med execute immediate
eller gennem php
. Dette kan dog øge sql-injektion
bekymringer.