我有这个存储过程:SQL Server存储过程可选参数,包括所有的如果空
ALTER PROCEDURE [dbo].[GetCalendarEvents]
(@StartDate datetime,
@EndDate datetime,
@Location varchar(250) = null)
AS
BEGIN
SELECT *
FROM Events
WHERE EventDate >= @StartDate
AND EventDate <= @EndDate
AND (Location IS NULL OR Location = @Location)
END
现在,我的位置参数,我想要做的是,如果该参数不为null,则包括参数在where子句中。如果参数为空,我想完全忽略那个参数,并且只通过开始和结束日期得到结果。
因为当我这样做,例如:
EXEC GetCalendarEvents '02/02/2014', '10/10/2015', null
我没有得到任何结果,因为有其不空,因为位置参数为空,我想其他位置来自所有地点的结果。
任何想法如何解决这个问题?
感谢,Laziale
谢谢,我会在10分钟内接受您的回答。那样做了。周末愉快 – Laziale 2015-04-03 15:39:46
如果事件表中的位置列可以包含空值,这将失败。来自@TT的建议。更好。 – 2015-04-03 17:35:52