我有一个带有以下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 = ''
感谢任何帮助
答案 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;