Мне нужно написать хранимую процедуру обновления. Я буду запрашивать параметры для всех столбцов (кроме идентификатора). Пользователь не будет постоянно отправлять все параметры. Он хочет отправить значение параметра NULL, поэтому не обновляйте этот столбец, столбцы, которые он хочет обновить, будут действительными значениями. Как мне написать хранимую процедуру для этого. По сути, мне нужно будет проверить значение каждого параметра, и если оно не равно нулю, то обновить только этот столбец. Заранее спасибо!!
Вопрос
Хранимая процедура сервера Sql
Ответы
Ответ 1 · рейтинг 4 · van
Используйте COALESCE, чтобы установить для столбца новое значение, если оно равно NOT NULL, или вернуться к тому же исходному значению в противном случае:
UPDATE MyTable
SET MyColumn1 = COALESCE(@MyColumn1, MyColumn1),
MyColumn2 = COALESCE(@MyColumn2, MyColumn2),
MyColumn3 = COALESCE(@MyColumn3, MyColumn3)
WHERE ID = @ID
Ответ 2 · рейтинг 2 · KM.
пытаться:
CREATE PROCEDURE YourUpdate
(
@Param_PK int
,@Param1 varchar(10)=NULL
,@Param2 int=NULL
,@Param3 datetime=NULL
)
UPDATE YourTable
SET col1=COALESCE(@Param1,col1)
,col2=COALESCE(@Param2,col2)
,col3=COALESCE(@Param3,col3)
WHERE PK=@Param_PK
go3
Ответ 3 · Thomas Lundström
Create Procedure MyProc ( @Param1 int,
@Param2 varchar(20),
@Param3 int = NULL)
As
Begin
-- the sp
End
См. @Param3, чтобы узнать, как указать значение по умолчанию.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Обновите другую коллекцию в хранимой процедуре базы данных документов Azure.
- Откат без инструкции START TRANSACTION не работает в хранимой процедуре MySQL
- Как сделать пакет STDistance, используя тип таблицы с Lat Longs?
- Получить значение из выходного параметра C#
- SQL Server - Отсутствующие индексы - Что будет использовать индекс?
- Можно ли записывать данные в виде операторов Insert из пакета служб SSIS?