text: Q:
  
  Хранимая процедура для вычисляемого поля с IF
  
  Понимаю что присваивать значения как я этого делаю наверное нельзя подскажите хоть немного
  
  как с IF можно работать в моем случае 
      CREATE PROCEDURE tekStoimOS/* текущая стоимость основного средства*/
  AS
  BEGIN
  DECLARE @@mesiac int,@@god int ;
  UPDATE dbo.tObjectOS 
  SET @@mesiac =  MONTH(GETDATE()) - MONTH(tObjectOS.dDateVvodOS),
      @@god=YEAR(GETDATE())-YEAR(tObjectOS.dDateVvodOS)
  begin 
   IF(@@mesiac<0)/*если месяц получается с минусом, то 12+(минусовое чило),присваиваем чило месяца пользования*/
   BEGIN
    SELECT @@mesiac= 12+@@mesiac,  @@god=@@god-1;/*год -1 так как месяц с минусом*/
    END;
    SET
   /*теперь расчитываем текущую стоимость = первоначальная стоимость + сумма амортизации лет + месяцев + если есть записи в таблице обслуживание то сумму поля стоимость обслуживание прибавить)*/
   tStoimOS.mTekStoimOS= tStoimOS.mPervStoimOS(tStoimOS.GodSumAmort * @@god +tStoimOS.GodSumAmort/12*@@mesiac)+
    SUM( SELECT tObsluzhOS.mStoimObsluzhOS
    FROM(tSoimOS INTER JOIN StoimObsluzhOS tSoimOS.iKodOS= StoimObsluzhOS.StoimObsluzhOS))
  
  A:
  
  у вас амортизация рассчитывается помесячно, поэтому нет необходимости так сложно рассчитывать срок в месяца (тем более что алгоритм неточный). В transact-sql для этого есть функция DATEDIFF. 
  Далее - не очень понял, почему амортизация плюсуется к начальной стоимости актива. По моему разумению использование актива уменьшает его текущую стоимость.
  Далее - весь текст процедуры сомнительный, Вам нужно подучить синтаксис
  Примерно это может выглядеь так:
  CREATE PROCEDURE tekStoimOS
  AS
  UPDATE tObjectOS
  SET mTekStoimOS = mPervStoimOS  * (1+GodSumAmort*datediff(month, dDateVVodOS, GETDATE())/12)+
  (SELECT SUM(mStoimObsluzhOS) FROM StoimObsluzhOS S WHERE S.iKodOS = tObjectOS.iKodOS)
  
  ну и всё
  
  