SQL服务器SP:@Param的某些时候为NULL值

问题描述:

我对SQL Server存储过程很陌生, 我想创建一个SP,它将通过StartDate和EndDate通过过滤器返回表中记录的列表,但会有'查看全部'选项,所以有时这些@Param可能不包含任何值。SQL服务器SP:@Param的某些时候为NULL值

目前我的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 

如何活跃呢?

试试这个:

WHERE (StartDateTime <= @StartDate OR @StartDate IS NULL) AND (EndDate >= @EndDate OR @EndDate IS NULL) 

希望它能帮助。

/克劳斯

+0

它是什么,我想要的[Status](int here)。 – Posto 2009-12-08 07:40:52

你可以尝试这样的事情

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