Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Deklaration mehrerer Werte in Oracle BIND-Variablen

Oracle-Bind-Variablen sind eine Eins-zu-Eins-Beziehung, daher müssten Sie für jeden Wert, den Sie in IN aufnehmen möchten, eine definieren Klausel:

SELECT JOB
  FROM EMP 
 WHERE JOB IN (:JOB1, :JOB2, :JOB3, ..., :JOB3000)

Sie müssen sich auch darüber im Klaren sein, dass Oracle IN unterstützt nur maximal 1.000 Werte, oder Sie erhalten:

Die beste Alternative besteht darin, eine Tabelle (abgeleitet, temporär, aktuell oder Ansicht) zu erstellen und mit ihr zu verknüpfen, um die gewünschten Werte zu erhalten. IE:

SELECT a.job
  FROM EMP a
  JOIN (SELECT :JOB1 AS col FROM DUAL
        UNION ALL
        SELECT :JOB2 FROM DUAL
        UNION ALL
        SELECT :JOB3 FROM DUAL
        UNION ALL 
        ...
        UNION ALL 
        SELECT :JOB3000 FROM DUAL) b ON b.col = a.job