2

渡したパラメータに基づいて、本番テーブルまたは「仕掛品」テーブルのいずれかにクエリを実行するストアドプロシージャがあります。2つの個別のストアドプロシージャを記述できますが、これは試してみる価値があると思いました。

次のようなもの:

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を書きたくありません:-/

4

2 に答える 2

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
于 2013-03-11T14:46:20.687 に答える
0

メインクエリが繰り返されないようにCTEを使用できます

with usertable as
(
    select * from userprod_table where 1 = @flag
    union
    select * from userwip_table where 0 = @flag
)
select ... from usertable ...
于 2013-03-11T14:57:51.937 に答える