T-SQL:存储过程中的Update语句

时间:2018-09-12 18:00:33

标签: sql sql-server tsql

我有一个存储过程,用于更新表的数据。存储过程具有默认值为NULL的可选参数,例如:

@parameter1 datatype = NULL,
@parameter2 datatype = NULL,
@parameter3 datatype = NULL.

仅当相应参数不为NULL时,我才需要存储过程来更新列。我正在考虑执行以下操作:

IF @parameter1 IS NOT NULL
    UPDATE Table 
    SET column1 = @parameter1 
    WHERE id = @id;

IF @parameter2 IS NOT NULL
    UPDATE Table 
    SET column2 = @parameter2 
    WHERE id = @id;

IF @parameter3 IS NOT NULL
    UPDATE Table 
    SET column3 = @parameter3 
    WHERE id = @id;

我不知道此解决方案的效率如何,因为有42列需要以这种方式进行更新。我想知道是否有更有效的解决方案。

1 个答案:

答案 0 :(得分:7)

如果可以的话怎么办?

UPDATE Table 
      SET column1 = coalesce(@parameter1, column1),
          column2 = coalesce(@parameter2, column2), 
          column3 = coalesce(@parameter3, column3)
WHERE id = @id;
相关问题