case in sql stored procedure on SQL Server

前端 未结 3 1107
谎友^
谎友^ 2021-02-19 01:39

Based on a parameter I\'d like to execute a different Update in my stored procedure. I\'ve tried many permutations of the code below, but I always have errors.

         


        
3条回答
  •  清歌不尽
    2021-02-19 02:11

    CASE isn't used for flow control... for this, you would need to use IF...

    But, there's a set-based solution to this problem instead of the procedural approach:

    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
    

    Note that the ELSE will preserves the original value if the @NewStatus condition isn't met.

提交回复
热议问题