Как обновить запись T-SQL и игнорировать ОБНОВЛЕНИЕ параметров, где NULL

#tsql #stored-procedures

#tsql #хранимые процедуры

Вопрос:

Есть ли способ создать ОБНОВЛЕНИЕ stored_procedure с параметрами типа:

 @param1 int = null,
@param2 int = null,
@param3 nvarchar(255) = null,
@param4 bit = null,
@id int
  

и с помощью инструкции UPDATE, которая обновит только поля, которые не являются NULL

итак, если я выполняю

 spUpdateProcedure @param1=255, @id=1
  

if обновит запись @id =1, но это изменит только поле @param1 и проигнорирует изменения в других @param2,3, 4.

Другими словами, это не изменит значение для null в @param2,3, 4

Спасибо.

Ответ №1:

 UPDATE YourTable
    SET Column1 = COALESCE(@param1, Column1),
        Column2 = COALESCE(@param2, Column2),
        ...
    WHERE id = @id
  

Ответ №2:

в вашем операторе редактирования вы можете сделать это

 update table
set
column1 = isnull(@param1,column1),
column2  isnull(@param2,column2)
  

Комментарии:

1. @Joe Stefanelli, упс, я хотел сказать в инструкции update. Спасибо, что указали на это!