2009-12-03 24 views
0

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

如何活躍呢?

回答

1

試試這個:

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

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