我有一个存储过程,我想根据我传入的参数查询生产或“正在进行中的工作”表。我可以写两个单独的存储过程,但我认为这是值得的尝试。
类似于:
create procedure getUserDetails
@userID int,
@prod varchar(5)
as
begin
select * from
if (@prod = 'true')
Begin
userprod_table
else
userwip_table
end
where something = 'something'
END
这一切都可能吗?我不想写几乎相同的2 SP: - /
答案 0 :(得分:1)
为什么不使用如下的简单if(@prod = 'true')
语句:
if (@prod = 'true')
begin
select * from userprod_table where something = 'something'
end else
begin
select * from userwip_table where something = 'something'
end
答案 1 :(得分:0)
您可以使用CTE,以便不重复主查询
with usertable as
(
select * from userprod_table where 1 = @flag
union
select * from userwip_table where 0 = @flag
)
select ... from usertable ...