重新处理现有的存储过程,使先前需要的参数可选。
查询量大,并且处理的内容远远超过我当前的问题,所以我不会将其全部发布,但我相信我可以通过编辑其中一个{{1条款。
WHERE
第一个参数WHERE
O.wsID = @wsid AND
((M.UpdateDate BETWEEN @olddate AND @newdate) OR (MI.UpdateDate BETWEEN @olddate AND @newdate))
是我需要进行选择的值,它最初被声明为0,并从网站前端的选择框中获得一个新值。我试图使用@wsid
语句在CASE
子句之间切换,具体取决于值是0还是实际ID。
WHERE
但是我在WHERE
@wsid = CASE
WHEN @wsid <> 0 THEN ((O.wsID = @wsid) AND ((M.UpdateDate BETWEEN @olddate AND @newdate) OR (MI.UpdateDate BETWEEN @olddate AND @newdate)))
ELSE ((M.UpdateDate BETWEEN @olddate AND @newdate) OR (MI.UpdateDate BETWEEN @olddate AND @newdate)))
END
子句本身中遇到了一堆语法错误,并且在下面的WHERE
语句中出现了Expecting CONVERSATION or TRY
错误。
是否有更简单的选项可以使SELECT
参数可选?
答案 0 :(得分:2)
WHERE
(O.wsID = @wsid OR @wsid = 0) AND
((M.UpdateDate BETWEEN @olddate AND @newdate) OR (MI.UpdateDate BETWEEN @olddate AND @newdate))