case in sql stored procedure on SQL Server

前端 未结 3 1121
谎友^
谎友^ 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.

    0 讨论(0)
  • 2021-02-19 02:13
    (SELECT CASE WHEN (SELECT  Salary FROM tbl_Salary WHERE Code=102 AND Month=1 AND Year=2020 )=0 THEN 'Pending'
    WHEN (SELECT  Salary FROM tbl_Salary WHERE Code=102 AND Month=1 AND Year=2020 AND )<>0 THEN (SELECT CASE  WHEN ISNULL(ChequeNo,0) IS NOT NULL   THEN 'Deposit' ELSE 'Pending' END AS Deposite FROM tbl_EEsi WHERE  AND (Month= 1) AND (Year = 2020) AND )END AS Stat)
    
    0 讨论(0)
  • Try this

    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
    
    0 讨论(0)
提交回复
热议问题