У меня есть хранимая процедура с двумя параметрами, которая возвращает мне список сотрудников. Моя хранимая процедура работает нормально, но мне нужно указать критерии в предложении where на основе условий. Вот моя хранимая процедура:
create procedure sp_GetEmployees
@BranchId int = 0,
@DeptId int = 0
as
Begin
if(@BranchId > 0 and @DeptId > 0)
select * from Employees where BranchId = @BranchId and DeptId = @DeptId
else if (@BranchId > 0 and @DeptId = 0)
select * from Employees where BranchId = @BranchId
else if (@BranchId > 0 and @DeptId = 0)
select * from Employees where DeptId = @DeptId
else
select * from Employees
End
Это простой случай, но у меня есть более сложные сценарии, когда я передаю от 8 до 10 параметров, и создание условий для них будет большой головной болью. Мне нужно упростить это в одном утверждении выбора. Я попробовал следующее, но, конечно, это не правильно:
if(@BranchId > 0 or @DeptId > 0)
select * from Employees where
case @BranchId when 0 then ''
else BranchId = @BranchId
End
else
select * from Employees
Как мне это упростить?