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

Erklæring af flere værdier i Oracle BIND-variabler

Oracle-bindingsvariabler er et en-til-en-forhold, så du skal have en defineret for hver værdi, du har til hensigt at inkludere i IN klausul:

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

Du skal også være opmærksom på, at Oracle IN understøtter kun maksimalt 1.000 værdier, ellers får du:

Det bedste alternativ er at oprette en tabel (afledt, midlertidig, faktisk eller visning) og slutte sig til den for at få de værdier, du ønsker. 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


  1. Hvad svarer til sort hul?

  2. Brug af store bogstaver i personnavne i programmering

  3. 3 måder at få skemaet for et resultatsæt i SQL Server

  4. Virker dette for at stoppe sql-injektioner