如何在SQL Server中使用Switch

Ram*_*ngh 18 sql-server syntax-error switch-statement

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

select 
   case @Temp
   when 1 then (@selectoneCount=@selectoneCount+1)
   when 2 then (@selectoneCount=@selectoneCount+1)
   end
Run Code Online (Sandbox Code Playgroud)

跑步时,我得到:

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

在这一行:

@selectoneCount = @selectoneCount + 1
Run Code Online (Sandbox Code Playgroud)

接近平等.

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

mar*_*c_s 42

CASE仅仅是一个"开关" 返回值 -不执行整个代码块.

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

SELECT 
   @selectoneCount = CASE @Temp
                         WHEN 1 THEN @selectoneCount + 1
                         WHEN 2 THEN @selectoneCount + 1
                     END
Run Code Online (Sandbox Code Playgroud)

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

  • 使用`ELSE @selectoneCount` *如果*当@Temp不是1或2并且@selectoneCount不改变时,你想创建一个默认情况。 (2认同)

cjk*_*cjk 5

这是一个 select 语句,因此 case 的每个分支都必须返回一些内容。如果您想执行操作,只需使用 if 即可。