Условно установленные значения в операторе UPDATE

Я хотел бы иметь хранимую процедуру, которая будет обновлять значения в строке таблицы в зависимости от того, указаны ли параметры или нет. Например, у меня есть ситуация, когда я хочу обновить все значения, но также ситуация, когда мне нужно обновить только два значения. Я надеялся, что смогу сделать это с помощью только одной процедуры, а не писать две, что меня не особо привлекает. Лучшее, что мне удалось придумать, это что-то вроде следующего:

CREATE PROCEDURE dbo.UpdatePerson
@PersonId INT,
@Firstname VARCHAR(50) = NULL,
@Lastname VARCHAR(50) = NULL,
@Email VARCHAR(50) = NULL
AS
BEGIN
    SET NOCOUNT ON

UPDATE Person 
Set 
    Firstname = COALESCE(@Firstname, Firstname),
    Lastname = COALESCE(@LastName, Lastname),
    Email = COALESCE(@Email, Email)
    WHERE PersonId = @PersonId

END

Я понимаю, что значения все равно будут обновляться каждый раз, что не идеально. Это эффективный способ достижения этой цели или это можно сделать лучше?

5
задан Stephanie Page 30 September 2010 в 19:01
поделиться