Вы можете сделать это, но возвращенная таблица должна выглядеть одинаково в обоих запросах.
Версия с несколькими выписками
create function GetMulti(@Flag int)
returns @T table (F1 int, F2 varchar(50))
as
begin
if @Flag = 1
begin
insert into @T
select
EmpID,
EmpName
from Employee
end
else
begin
insert into @T
select
ManagerID,
ManagerName
from Manager
end
return
end
Встроенная версия с использованием union
create function GetMulti2(@Flag int)
returns table
as return
(
select
EmpID as F1,
EmpName as F2
from Employee
where
@Flag = 1
union all
select
ManagerID as F1,
ManagerName as F2
from Manager
where
@Flag <> 1
)