пятница, 20 мая 2011 г.

SQL error: "Too many parameters were provided in this RPC request" или ошибка 2100 парметров в SQL запросе

Причиной этой ошибки является ограничение количества параметров который можно передать в SQL команду. Обычно данная ситуция возникает когда нужно вычитать список сущностей по идентификатору.
SELECT *  FROM table WHERE Id = idValue1 OR Id = idValue2 OR Id = idValue3 ...OR Id = idValue3000
или
SELECT *  FROM table WHERE Id IN (idValue1,idValue2,idValue3...idValue3000)

Возникает  эта ситуация конечно не часто,  но и она имеет место быть. Заявления вроде "Да как вы вообще допустили появления таких запрсов в системе!" - не принимаются. Различные системы, различные архитектурные ограничения...  И  вот, пожалуйста,  все упирается в необходимость вычитать из базы 3000 сущностей по дентификатору...

Задача.
Имеется исходная коллекция  идентификатов сущностей А. Коллекция может содежать больше 2100 элементов ( а може и меньше, но это не важно. Как и не важно то,  как и откуда эта коллекция взялась. Она есть.). Необходимо вычитать из базы все сущности А, айдишники которых присутствуют в коллекции идентификаторов . Порядок вычитанных сущностей должен совпадать с порядком следования элементов в исходной коллекции идентификаторов.

Решение.
Продолжение следует...

Комментариев нет:

Отправить комментарий