sql >> Databasteknik >  >> RDS >> Oracle

Deklaration av flera värden i Oracle BIND-variabler

Oracle bindningsvariabler är en en-till-en-relation, så du behöver en definierad för varje värde du tänker inkludera i IN klausul:

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

Du måste också vara medveten om att Oracle IN stöder bara maximalt 1 000 värden, annars får du:

Det bästa alternativet är att skapa en tabell (härledd, tillfällig, faktisk eller vy) och gå med i den för att få de värden du vill ha. 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. Hur får jag parametervärden för SQL Server-fråga i SQL Server Profiler

  2. databasdesign för frågesport med olika språk

  3. Postgres är den coolaste databasen – anledning #1:Utvecklare älskar det!

  4. Kan inte komma åt Sequelize-instansmetoder