2016-01-18 37 views
1

我有一個帶有以下UNION SELECT的存儲過程。我希望第二個選擇只在@name爲空的情況下運行。僅當@variable是emply時才使用SQL存儲過程來選擇聯合

CREATE PROCEDURE [dbo].[spNames] 
@name NVARCHAR(20) 
AS 
SET NOCOUNT ON; 
SELECT names FROM namesTbl1 
UNION SELECT names FROM namesTbl2 //This should run only if @name = '' 

任何幫助表示讚賞

回答

5

您可以使用if。但是,如果你想有一個單一查詢:

SELECT names FROM namesTbl1 
UNION 
SELECT names FROM namesTbl2 WHERE @name = ''; 

注:由於您使用UNION,這會從第一個表中刪除重複項(如果有的話)。因此,if效率更高:

if (@name = '') 
begin 
    SELECT names FROM namesTbl1; 
end; 
else 
begin 
    SELECT names FROM namesTbl1 
    UNION 
    SELECT names FROM namesTbl2; 
end;