我正在使用以下存储过程从到目前为止可以正常工作的表中选择数据。
现在,我想创建两种不同的情况,而不需要重复整个查询:如果输入@selection =“ active”,则选择不等于statusX =“ Published”的所有内容,否则请选择所有与statusX =“ Published”相等的内容。
谁能告诉我如何在这里实现?
我的存储过程(减少的列):
ALTER PROCEDURE [dbo].[FetchRequests]
@selection nvarchar(20)
AS
BEGIN
SET NOCOUNT ON;
SELECT col1,
col2,
col3,
col4,
col5,
statusX,
logStatus,
logID
FROM LogRequests
WHERE logStatus = 'active'
ORDER BY logID desc
FOR XML PATH('cols'), ELEMENTS, TYPE, ROOT('ranks')
END
蒂姆,非常感谢您对此提供的任何帮助。
您可以只使用条件WHERE子句:
ALTER PROCEDURE [dbo].[FetchRequests]
@selection nvarchar(20)
AS
BEGIN
SET NOCOUNT ON;
SELECT col1,
col2,
col3,
col4,
col5,
statusX,
logStatus,
logID
FROM LogRequests
WHERE logStatus = 'active'
AND ((statusX <> 'Published' AND @selection = 'active')
OR (statusX = 'Published' AND @selection <> 'active'))
ORDER BY logID desc
FOR XML PATH('cols'), ELEMENTS, TYPE, ROOT('ranks')
END
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句