Oracle
 sql >> Database >  >> RDS >> Oracle

Dichiarazione di più valori nelle variabili Oracle BIND

Le variabili di associazione Oracle sono una relazione uno-a-uno, quindi ne avresti bisogno di una definita per ogni valore che intendi includere nel IN clausola:

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

Devi anche essere consapevole che Oracle IN supporta solo un massimo di 1.000 valori, altrimenti otterrai:

L'alternativa migliore è creare una tabella (derivata, temporanea, effettiva o vista) e unirvi ad essa per ottenere i valori desiderati. 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