我有一个存储过程,用于更新表的数据。存储过程具有默认值为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列需要以这种方式进行更新。我想知道是否有更有效的解决方案。
答案 0 :(得分:7)
如果可以的话怎么办?
UPDATE Table
SET column1 = coalesce(@parameter1, column1),
column2 = coalesce(@parameter2, column2),
column3 = coalesce(@parameter3, column3)
WHERE id = @id;