仅当@variable为emply时才使用SQL存储过程选择union

时间:2016-01-18 17:42:28

标签: c# sql stored-procedures azure-sql-database

我有一个带有以下UNION SELECT的存储过程。我希望第二个选择仅在@name为空时运行。

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 = ''

感谢任何帮助

1 个答案:

答案 0 :(得分: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;