Является ли многозначный параметр хранимой процедуры просто плохой практикой? - PullRequest
0 голосов
/ 20 июля 2010

У меня странное отвращение к передаче нескольких параметров ID в одну хранимую процедуру.Например, это выглядит просто неправильно:

GetMyObject (ListofIDs, OtherParam1, OtherParam2, ...)

Я понимаю, КАК это сделать (правильно, если нужно) .. но яЯ чувствую, что должен это сделать.Я чувствую, что это побеждает цель хранимой процедуры / подпрограммы «получить элемент».Я чувствую, что должен построить свои SP для поддержки соответствующих параметров фильтра.Если у моего звонящего есть список идентификаторов, разве они не должны вызывать sp столько раз?

Справка?

1 Ответ

0 голосов
/ 20 июля 2010

Подпрограмма «получить элемент по идентификатору» никогда не должна возвращать более одного объекта, потому что это не имеет абсолютно никакого лингвистического смысла.

Процедура "получить предметы по идентификаторам"? Конечно, если у вас есть достойный вариант использования, и он будет использоваться достаточно часто.

Но в большинстве случаев, да, вместо процедуры, возвращающей несколько элементов по идентификатору, вам нужна процедура, которая возвращает элементы на основе параметров фильтрации, соответствующих приложению (например, "дать мне все транзакции с 8 января на сумму более 10 долларов США") ).

Кстати, иногда диапазон идентификаторов (например, все от 5 до 10) - это совершенно правильный набор фильтров!

Кстати, это не обязательно проблема MySQL или SQL в целом. Практически любой вид API запросов к наборам данных на любом языке представит эти же самые вопросы проектирования, и их ответы обычно будут очень похожи.

...