use*_*242 2 sql t-sql sql-server stored-procedures
在我的程序中,变量@year应该采用两种形式:1:如果@ Year = 1,选择所有年份.2:@年=输入的年份.
这是我的代码示例:
CREATE PROC spProcName (@Year)
AS
BEGIN
SELECT Year AS [YEAR], Item AS [ITEM]
FROM Sales
WHERE Year = @YEAR
Run Code Online (Sandbox Code Playgroud)
我可以让它适用于@Year = 2013,但我不知道如何结合@Year = 1来选择所有年份.我猜这将是CASE.
我还有许多其他变量的类似条件,所以我不能只创建一个IF语句.
替代约翰的答案,但准等价:
WHERE (@year=1 OR year=@year)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,最好OPTION(RECOMPILE)在查询结束时添加,否则查询将无法选择year列中是否存在索引.