in
се използва с collections
, така че вашият въведен низ първо трябва да бъде преобразуван в collection
(чрез разделяне на редове въз основа на разделител със запетая)
Опитайте нещо подобно
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, '[^,]+')
)
между другото, този org_id in ()
ще върне true
if :input_id
е null
.
Друг подход би било първо да се конструира цялата заявка като низ и след това да се изпълни с execute immediate
или чрез php
. Това обаче може да доведе до sql инжектиране
опасения.