in wird mit collections verwendet , also sollte Ihre Eingabezeichenfolge zuerst in collection konvertiert werden (durch Aufteilen in Zeilen, basierend auf Komma-Trennzeichen)
Versuchen Sie so etwas
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, '[^,]+')
)
übrigens diese org_id in () gibt true zurück wenn :input_id ist null .
Ein anderer Ansatz wäre, die ganze Abfrage zuerst als String zu konstruieren und sie dann entweder mit execute immediate auszuführen oder über php . Dies könnte jedoch sql injection
auslösen Bedenken.