Чтобы делать то, что вы хотите без хранимой процедуры, вам нужно объединить DeptID с запросом внутри хранимой процедуры.
Предположим, что ваш SP делает select DeptID, DeptInfo from @SomeOtherTableWithData where DeptiID = @DeptID
.
Вот пример кода с вашими таблицами, который заменяет хранимую процедуру соединением.
-- Setup sample data
declare @Departments table (DeptID int, ParentDeptID int)
declare @Filter table (DeptID int)
declare @SomeOtherTableWithData table (DeptID int, DeptInfo varchar(50))
insert into @Departments values (2, null)
insert into @Departments values (3, null)
insert into @Departments values (7, 2)
insert into @Departments values (8, 2)
insert into @Departments values (9, 3)
insert into @Filter values(2)
insert into @Filter values(9)
insert into @SomeOtherTableWithData values (2, 'Info DeptID 2')
insert into @SomeOtherTableWithData values (3, 'Info DeptID 3')
insert into @SomeOtherTableWithData values (7, 'Info DeptID 7')
insert into @SomeOtherTableWithData values (8, 'Info DeptID 8')
insert into @SomeOtherTableWithData values (9, 'Info DeptID 9')
-- Get the DeptID's into temporary table #DeptIDs
select D.DeptID -- Parents
into #DeptIDs
from @Departments as D
inner join @Filter as F
on D.DeptID = F.DeptID
union
select D.DeptID -- Children
from @Departments as D
inner join @Filter as F
on D.ParentDeptID = F.DeptID
-- Use #DeptID in a join with the query in the stored procedure
select S.DeptID, S.DeptInfo
from #DeptIds as D
inner join @SomeOtherTableWithData as S
on D.DeptID = S.DeptID
-- Drop the temporary table
drop table #DeptIDs
Результат
DeptID DeptInfo
2 Info DeptID 2
7 Info DeptID 7
8 Info DeptID 8
9 Info DeptID 9
Вы можете использовать подзапрос вместо временной таблицы, если вам нужен только один оператор SQL.