Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Хранимая процедура сервера Sql

Автор вопроса: user228777Ответов: 3

Мне нужно написать хранимую процедуру обновления. Я буду запрашивать параметры для всех столбцов (кроме идентификатора). Пользователь не будет постоянно отправлять все параметры. Он хочет отправить значение параметра NULL, поэтому не обновляйте этот столбец, столбцы, которые он хочет обновить, будут действительными значениями. Как мне написать хранимую процедуру для этого. По сути, мне нужно будет проверить значение каждого параметра, и если оно не равно нулю, то обновить только этот столбец. Заранее спасибо!!

stored-proceduressql-server-2008

Ответы

Ответ 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.

Похожие материалы