Этот вопрос специально предназначен для хранимых процедур для обслуживания отчетов SSRS, но я думаю, что его можно применить к любой хранимой процедуре.
Часто мы отправляем диапазон в хранимую процедуру, чтобы получить данные для этого диапазона. Например, получить все данные о клиентах, имена которых начинаются с «А» до «К». На стороне клиента у меня есть выпадающий список всех имен клиентов (с typeahead), и пользователь может выбрать начало и конец. В раскрывающемся списке я показываю только имя клиента, но у меня также есть идентификатор клиента. Теперь стоит отметить, что это всего лишь пример, я не всегда ищу клиента между «А» и «К». Есть времена, диапазон для чего-то совершенно другого. Для краткости мы будем придерживаться имен клиентов.
Допустим, пользователь выбрал следующее:
- Начало: Элейн Бенис (CustomerId: 199)
- Конец: Джерри Сейнфельд (CustomerId: 3)
Теперь у меня есть 2 варианта передачи этих параметров в хранимую процедуру.
- Передача имен "Elaine Benes" и "Jerry Seinfeld"
- Pass IDs 199 и 3. На стороне хранимой процедуры найдите имя 199 и имя 3 и используйте их.
Если I go с вариантом 1, если клиент не использует раскрывающийся список с именами из таблицы клиентов они могут передавать любую строку. Вариант 2 заставляет их отправлять идентификатор клиента. Но для варианта 2 потребуется поиск идентификаторов на стороне хранимой процедуры, чтобы найти имя, поэтому необходимо проделать дополнительную работу.
У меня вопрос , с какими вариантами мне следует go использовать? Есть ли плюсы / минусы для каждого подхода?