in
viene utilizzato con collections
, quindi la tua stringa di input dovrebbe prima essere convertita in collection
(suddividendo in righe, in base al delimitatore di virgola)
Prova qualcosa del genere
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, '[^,]+')
)
a proposito, questo org_id in ()
restituirà true
se :input_id
è null
.
Un altro approccio sarebbe costruire prima l'intera query come una stringa e quindi eseguirla con execute immediate
o tramite php
. Tuttavia ciò potrebbe aumentare sql injection
preoccupazioni.