Oracle
 sql >> база данни >  >> RDS >> Oracle

Деклариране на множество стойности в променливи на Oracle BIND

Променливите за свързване на Oracle са връзка едно към едно, така че ще ви е необходима дефинирана за всяка стойност, която възнамерявате да включите в IN клауза:

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

Трябва също така да знаете, че Oracle IN поддържа само максимум 1000 стойности или ще получите:

Най-добрата алтернатива е да създадете таблица (изведена, временна, действителна или изглед) и да се присъедините към нея, за да получите желаните стойности. 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle pl/sql води до един низ

  2. Как да създадете меню в SQLPlus или PL/SQL

  3. Променете порта на Oracle от порт 8080

  4. GROUP BY / объркване на агрегатната функция в SQL

  5. Грешка с JPA транзакция при извикване на съхранена процедура