如何在SQL Server中使用Switch

问题描述 投票:16回答:4

我想在我的存储过程中使用CASE。我的代码中出现了一些语法错误:

select 
   case @Temp
   when 1 then (@selectoneCount=@selectoneCount+1)
   when 2 then (@selectoneCount=@selectoneCount+1)
   end

跑步时,我得到:

'='附近的语法不正确。

在这一行:

@selectoneCount = @selectoneCount + 1

接近平等。

实际上我从另一个sp获得返回值到@temp然后如果@temp = 1那么我想将@SelectoneCount的计数增加1,依此类推。请告诉我正确的语法是什么。

sql-server switch-statement syntax-error
4个回答
41
投票

CASE只是一个返回值的“开关” - 不执行整个代码块。

您需要将代码更改为以下内容:

SELECT 
   @selectoneCount = CASE @Temp
                         WHEN 1 THEN @selectoneCount + 1
                         WHEN 2 THEN @selectoneCount + 1
                     END

如果@temp设置为这些值(1或2),那么你将得到一个NULL


3
投票

这是一个select语句,因此case的每个分支都必须返回一些东西。如果要执行操作,只需使用if。


2
投票
    select 
       @selectoneCount = case @Temp
       when 1 then (@selectoneCount+1)
       when 2 then (@selectoneCount+1)
       end

   select  @selectoneCount 

1
投票

实际上我从另一个sp获得返回值到@temp然后它@temp = 1然后我想将@SelectoneCount的计数加1,依此类推。请告诉我正确的语法是什么。

有什么不对:

IF @Temp = 1 --Or @Temp = 2 also?
BEGIN
    SET @SelectoneCount = @SelectoneCount + 1
END

(虽然这确实是程序代码 - 通常不是使用SQL的最佳方法)

© www.soinside.com 2019 - 2024. All rights reserved.