Oracle
 sql >> Base de données >  >> RDS >> Oracle

Déclaration de plusieurs valeurs dans Oracle BIND Variables

Les variables de liaison Oracle sont une relation un à un, vous en aurez donc besoin d'une définie pour chaque valeur que vous avez l'intention d'inclure dans le IN clause :

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

Vous devez également savoir qu'Oracle IN ne prend en charge qu'un maximum de 1 000 valeurs, sinon vous obtiendrez :

La meilleure alternative consiste à créer une table (dérivée, temporaire, réelle ou vue) et à la joindre pour obtenir les valeurs souhaitées. C'est-à-dire :

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