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.