Необязательно, где предложение / параметр в SQL 2008 хранится в Proc? - PullRequest
4 голосов
/ 12 ноября 2009

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

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

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

Спасибо!

Ответы [ 2 ]

10 голосов
/ 12 ноября 2009

Вы можете использовать это или "ИЛИ" контракт

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


... WHERE GroupID = @GroupdID OR @GroupdID IS NULL
2 голосов
/ 12 ноября 2009
create procedure MyProc (@GroupID int = null)
as
begin
    update MyTable set ....
    where @GroupID is null or GroupID = @GroupID
end
...