我是SQL Server存储过程的新手, 我正在尝试创建一个SP,它将通过StartDate和EndDate通过过滤器返回表中的记录列表,但是会有“查看全部”选项,所以有时@Param可能不包含任何值。
目前我的SP就像
CREATE PROCEDURE [dbo].[spGetBonusRun]
(
@StartDate as DATETIME,
@EndDate as DATETIME
)
AS
SELECT [Id]
,[StartDateTime]
,[EndDate]
,[Status]
FROM [Valt].[dbo].[BonusRun]
WHERE StartDateTime <= @StartDate AND EndDate >= @EndDate
如何激活?
答案 0 :(得分:1)
试试这个:
WHERE (StartDateTime <= @StartDate OR @StartDate IS NULL) AND (EndDate >= @EndDate OR @EndDate IS NULL)
希望它有所帮助。
/克劳斯
答案 1 :(得分:0)
您可以尝试这样的事情
CREATE PROCEDURE [dbo].[spGetBonusRun]
(
@StartDate as DATETIME,
@EndDate as DATETIME
)
AS
SELECT [Id]
,[StartDateTime]
,[EndDate]
,[Status]
FROM [Valt].[dbo].[BonusRun]
WHERE StartDateTime <= ISNULL(@StartDate, StartDateTime)
AND EndDate >= ISNULL(@EndDate, EndDate)
请注意使用ISNULL