SQL server SP:@Param的某些时候是NULL值

时间:2009-12-03 09:16:03

标签: sql-server stored-procedures

我是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

如何激活?

2 个答案:

答案 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