Search code examples
sqlsql-updateproceduresqlanywhere

IF ELSE statements to update table in sql procedure does not work


I have a table called Employees and need to update the SalaryId of the Employee by 1 if 1 is inputed and decrease it by -1 in case -1 is inputed. I think my approach has totally wrong logic, but I cannot find what I wanna do although I hav been searching for a while. Can someone assist me understand what I am doing wrong?

ALTER PROCEDURE "dba"."updatePosition"(IN rating int, @PersonalID int )
AS BEGIN
   IF rating = 1 
     UPDATE dba.Employees
      IF (dba.Employees.SalaryId  > 1 && dba.Employees.SalaryId < 7)

      SET dba.Employees.SalaryId = dba.Employees.SalaryId  + 1
      WHERE dba.Employees.PersonalID = @PersonalID

   ELSEIF rating = -1
   UPDATE dba.Employees
   SET dba.Employees.SalaryId  = dba.Employees.SalaryId  - 1
        IF dba.Employees.SalaryId  < 1
           dba.Employees.SalaryId  = 1
        IF dba.Employees.SalaryId  > 7
           dba.Employees.SalaryId = 7
        WHERE dba.Employees.PersonalID = @PersonalID
    END

Solution

  • This doesn't make sense to me:

     UPDATE dba.Employees
      IF (dba.Employees.SalaryId  > 1 && dba.Employees.SalaryId < 7)
    
      SET dba.Employees.SalaryId = dba.Employees.SalaryId  + 1
      WHERE dba.Employees.PersonalID = @PersonalID
    

    Perhaps you want:

    UPDATE dba.Employees
      SET dba.Employees.SalaryId = dba.Employees.SalaryId  + 1
      WHERE dba.Employees.PersonalID = @PersonalID AND
            dba.Employees.SalaryId  > 1 AND
            dba.Employees.SalaryId < 7