Я работаю над веб-проектом, где мне нужно получить (скажем) записи о сотрудниках. В некоторых случаях мне нужно получить одну запись, указав идентификатор сотрудника. В других случаях мне нужно получить несколько записей о сотрудниках, указав SectorID. Эту логику можно расширить, чтобы охватить дополнительные сценарии: получить все записи о сотрудниках, получить записи о сотрудниках по квалификации и т. д.
Является ли хорошей практикой использование одной хранимой процедуры, которая принимает переменное количество параметров для обработки различных сценариев (используя значения по умолчанию, когда параметр не указан). Бывший:
CREATE PROCEDURE [dbo].[GetEmployeeRecords]
(
@employeeID int = -1,
@sectorID int = -1
)
AS
BEGIN
SELECT EmployeeID,
EmployeeFirstName,
EmployeeLastName,
s.SectorName
FROM dbo.Employees e
INNER JOIN Sectors s ON e.SectorID = s.SectorID
WHERE (e.EmployeeID = @EmployeeID OR @EmployeeID = -1)
AND (e.SectorID = @SectorID OR @SectorID = -1)