create proc compute_turns_left @user_id varchar(10) as declare @days integer, @turns, @turns_per_day, @max_turns -- Read the configuration variables select @turns_per_day = isnull(convert(int, val), 1) from misc where tag='Turns_Per_Day' select @max_turns = isnull(convert(int, val), 1) from misc where tag='Max_Turns_Allowed' -- How many days since they last used a turn? select @days=datediff(d,getdate(),last_turn) from users where user_id=@user_id -- Update their turns update turns_left = turns_left + @days * @turns_per_day from users where user_id=@user_id -- And apply the limit cap update turns_left = @max_turns from users where user_id=@user_id and turns_left > @max_turns go