根据参数查询不同的表

时间:2013-03-11 14:42:56

标签: sql sql-server sql-server-2008

我有一个存储过程,我想根据我传入的参数查询生产或“正在进行中的工作”表。我可以写两个单独的存储过程,但我认为这是值得的尝试。

类似于:

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: - /

2 个答案:

答案 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 ...