Рано или поздно, каждый специалист, работающий с базами данных ORACLE, наталкивается на ограничение максимального количества элементов для оператора IN: SELECT *
FROM VOUCHERS
WHERE CLIENT_ID IN (28, 45, 46, 102,...) В ORACLE для оператора IN в скобках можно перечислять не более 1000 элементов через запятую. Иногда этого количества может не хватать. Что делать в этом случае? Во-первых, давай рассмотрим случай когда такого большого количества может не хватать? Не каждый день составляешь запрос и вручную перечисляешь через запятую тысячу элементов, верно? :) На самом деле, SQL-запросы могут формировать и программы (прямо налету), а не люди. Например, в некотором приложении пользователь нажал кнопку, согласно которой должны выбраться все счета из таблицы VOUCHERS базы данных, но именно счета видимых в данный момент на экране (а список клиентов определённым образом отфильтрован).
И программа динамически строит запрос, как я и написал выше, где в скобках для оператора IN перечисляются