小编Ker*_*own的帖子

在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
Run Code Online (Sandbox Code Playgroud)

我意识到每次都会更新这些值,这并不理想.这是实现这一目标的有效方法,还是可以采用更好的方式?

sql t-sql sql-server

5
推荐指数
1
解决办法
704
查看次数

标签 统计

sql ×1

sql-server ×1

t-sql ×1