基于参数我想在我的存储过程中执行不同的更新.我尝试了下面代码的许多排列,但我总是有错误.
@EmpID int = 0,
@NewStatus nvarchar(10) = 0
AS
BEGIN
SET NOCOUNT ON;
select CASE @NewStatus
when 'InOffice' then
Update tblEmployee set InOffice = -1 where EmpID = @EmpID
when 'OutOffice' then
Update tblEmployee set InOffice = -1 where EmpID = @EmpID
when 'Home' then
Update tblEmployee set Home = -1 where EmpID = @EmpID
END
Run Code Online (Sandbox Code Playgroud)
rs.*_*rs. 25
试试这个
If @NewStatus = 'InOffice'
BEGIN
Update tblEmployee set InOffice = -1 where EmpID = @EmpID
END
Else If @NewStatus = 'OutOffice'
BEGIN
Update tblEmployee set InOffice = -1 where EmpID = @EmpID
END
Else If @NewStatus = 'Home'
BEGIN
Update tblEmployee set Home = -1 where EmpID = @EmpID
END
Run Code Online (Sandbox Code Playgroud)
Mic*_*son 18
CASE不用于流量控制...为此,你需要使用IF...
但是,有一个基于集合的解决方案来解决这个问题,而不是程序方法:
UPDATE tblEmployee
SET
InOffice = CASE WHEN @NewStatus = 'InOffice' THEN -1 ELSE InOffice END,
OutOffice = CASE WHEN @NewStatus = 'OutOffice' THEN -1 ELSE OutOffice END,
Home = CASE WHEN @NewStatus = 'Home' THEN -1 ELSE Home END
WHERE EmpID = @EmpID
Run Code Online (Sandbox Code Playgroud)
请注意,ELSE如果@NewStatus不满足条件,则将保留原始值.