我有這個存儲過程: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