Параметры SQL Max - PullRequest
       4

Параметры SQL Max

5 голосов
/ 01 июля 2010

Я прочитал здесь , что максимальное количество параметров, которые могут быть переданы в хранимую процедуру, равно 2100.

Мне просто любопытно, для какой системы потребуется передать SP с параметрами 2100, и нельзя ли разделить это на несколько SP?

Я подумал, что, возможно, SP, который вызывает несколько SP, потребует передачи большого количества параметров, я просто не могу представить, как написать эту отвратительную EXEC характеристику.

Ответы [ 3 ]

10 голосов
/ 02 июля 2010

Ограничение параметров процедур предшествует как типу данных XML, так и параметрам с табличным значением, поэтому в те времена просто не было альтернативы. Наличие 2100 параметров в процедуре не обязательно означает, что человек написал это, и что человек это назовет. В сгенерированном коде, как и в коде, созданном инструментами и средами, довольно распространено выдвигать такие границы для любого языка, поскольку обслуживание и рефакторинг сгенерированного кода происходят в инструменте генерирования, а не в коде результата .

5 голосов
/ 02 июля 2010

Если у вас есть хранимая процедура, использующая 2100 параметров, у вас, скорее всего, есть какая-то проблема проектирования.

Передача списка значений CSV в одном параметре (и использование функции разделения табличных значений для преобразования их в строки) или использование параметра табличных значений будет намного проще, чем обработка всех этих входных параметров.

4 голосов
/ 01 июля 2010

У меня была ситуация, когда мне приходилось запускать что-то похожее на следующее:

SELECT 
  ...
WHERE
  ID IN (?,?,?,?...)

В списке параметров были указаны все объекты, которые пользователь имел право использовать в системе (он был динамически сгенерирован некоторымиосновные рамки).Оказывается, что у SGBD было ограничение на количество параметров, которые должны передаваться подобным образом, и оно было ниже 2100 (IIRC, это был Oracle, и максимум было 999 параметров в списке IN).

Это будетбыть хорошим примером довольно длинного списка параметров для чего-то, что должно было быть хранимой процедурой (у нас было более 999 и менее 2100 параметров для передачи).

Не знаю, применяется ли ограничение 999к серверу sql, но это определенно ситуация, когда длинный список будет полезен ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...