我想在我的存储过程中使用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,依此类推。请告诉我正确的语法是什么。
CASE
只是一个返回值的“开关” - 不执行整个代码块。
您需要将代码更改为以下内容:
SELECT
@selectoneCount = CASE @Temp
WHEN 1 THEN @selectoneCount + 1
WHEN 2 THEN @selectoneCount + 1
END
如果@temp
设置为这些值(1或2),那么你将得到一个NULL
这是一个select语句,因此case的每个分支都必须返回一些东西。如果要执行操作,只需使用if。
select
@selectoneCount = case @Temp
when 1 then (@selectoneCount+1)
when 2 then (@selectoneCount+1)
end
select @selectoneCount
实际上我从另一个sp获得返回值到@temp然后它@temp = 1然后我想将@SelectoneCount的计数加1,依此类推。请告诉我正确的语法是什么。
有什么不对:
IF @Temp = 1 --Or @Temp = 2 also?
BEGIN
SET @SelectoneCount = @SelectoneCount + 1
END
(虽然这确实是程序代码 - 通常不是使用SQL的最佳方法)