У меня есть общий сохраненный процесс в моей базе данных SQL Server 2005
Он возвращает список элементов продукта для использования на веб-сайте, и я хочу сделать его более пригодным для повторного использования на сайте, чтобы я мог использовать его для возвратаопределенное количество продуктов.
Хранимая процедура принимает параметр num items, чтобы ограничить количество возвращаемых товаров, но мне интересно, есть ли способ, чтобы хранимый процесс мог принимать параметр с нулевым значением безприбегнуть к ведению двух операторов выбора или двух сохраненных процедур.
Вот урезанный пример без лишних вещей в предложении WHERE и т. д.
create procedure GET_PRODUCTS
@num_items int = null
as
select TOP(@num_items) prod_id, prod_name, prod_price
from products
end
Вопрос в том, как мневыберите все записи, как если бы верхний пункт отсутствовал в случае, если нулевой результат передан в процесс.
У меня есть пара идей, но я не уверен, как они оцениваются с точки зрения производительности в отношенииSQL Server и это то, что я пытаюсь оценить?
1) Я мог бы проверить, является ли параметр нулевым, и если да, переназначить его на очень большое целое числоэто должно быть больше, чем количество записей в таблице (в настоящее время около 5000 и растет)
2) То же, что и выше, но каждый раз при подсчете размера таблицы продуктов каждый раз