[英]How to set Default Value of Parameter in SQL to ALL
我的表中有3個參數,分別稱為@StartDate
, @EndDate
和@ServerName
。 我希望所有這些3的默認值都設置為ALL。
用戶可以選擇StartDate
和EndDate
,它將在這些日期返回所有停止的服務。 我還希望他們能夠搜索ServerName
,無論服務何時停止,它都將返回該ServerName
所有記錄。
我的問題是搜索server name
。 現在,我只是臨時修復了參數,這就是將@StartDate
參數的默認值設置為年初,該日期是記錄任何記錄之前的日期,而@EndDate
設置為當前日期。日期。 因此,當報表打開時,它會顯示所有已停止服務的記錄,然后用戶可以根據需要調整開始和結束日期。 但是,當我搜索ServerName
我希望它只查找該ServerName
所有記錄,但它仍然只返回Start和End Date中的所有記錄。
這是我的查詢:
SELECT ServerName, ServiceName, Status, Date, Time
FROM ServicesStatus
WHERE (Date BETWEEN @StartDate AND @EndDate) OR (ServerName = @ServerName)
ORDER BY Date DESC, Time DESC, ServerName
因此,我需要將@StartDate
和@EndDate
設置為所有日期的默認值,以便當有人搜索ServerName
,它將在SQL數據庫中返回該服務器的所有實例。
我還需要對@ServerName
參數使用相同的參數,因此當某人搜索時間范圍時,它將返回在該時間段內具有已停止服務的所有服務器名稱。
您可以在where
子句中使用OR
運算符將默認參數值設置為NULL
。
如果用戶未使用任何條件,則它將選擇所有數據。
DECLARE @StartDate DATETIME = NULL
DECLARE @EndDate DATETIME = NULL
DECLARE @ServerName VARCHAR(100) = NULL
SELECT ServerName, ServiceName, Status, Date, Time
FROM ServicesStatus
WHERE
(Date >= @StartDate OR @StartDate IS NULL)
AND
(Date <= @EndDate OR @EndDate IS NULL)
OR
(ServerName = @ServerName OR @ServerName IS NULL)
ORDER BY Date DESC, Time DESC, ServerName
這是默認參數sampleFiddle
注意
您的默認值可以是其他值(例如'ALL'
),這些值不必為NULL
。 您可以默認參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.