[英]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.