Необязательно, где параметр/параметр в хранимой процедуре SQL 2008?

Я пишу код, который обновляет таблицу. В зависимости от того, что пользователь хочет сделать, он либо обновляет большой набор записей, либо меньше. Определяющим фактором является идентификатор группы.

Пользователь может выбрать, следует ли обновлять таблицу для всех записей или только те, у которых есть этот идентификатор группы. Я хотел бы использовать ту же самую хранимую процедуру для обоих экземпляров, и, возможно, немного логики там, чтобы различать сценарии. (Я бы предпочел не писать два хранимых процесса с 90% идентичным кодом.)

Я не эксперт в хранимых процедурах и не уверен, могу ли я передавать необязательные параметры или как динамически генерировать часть предложения where, в зависимости от того, существует ли идентификатор группы. Любые предложения приветствуются.

Спасибо!

Ответ 1

Вы можете использовать этот или "OR" contsruct

... WHERE GroupID = ISNULL(@GroupdID, GroupID)


... WHERE GroupID = @GroupdID OR @GroupdID IS NULL

Ответ 2

create procedure MyProc (@GroupID int = null)
as
begin
    update MyTable set ....
    where @GroupID is null or GroupID = @GroupID
end