4

我正在编写一些更新表格的代码。根据用户想要做什么,它要么更新一大组记录,要么更新一个较小的记录。描述因素是组 ID。

用户可以选择是更新所有记录的表,还是只更新具有该 groupID 的记录。我想对两个实例使用相同的存储过程,其中可能有一些逻辑来区分场景。(我不希望用 90% 相同的代码编写两个存储过程。)

我不是存储过程方面的专家,我不确定是否可以传入可选参数,或者如何根据 groupID 是否存在动态生成 where 子句的一部分。欢迎任何建议。

谢谢!

4

2 回答 2

11

您可以使用此或“或”构造

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


... WHERE GroupID = @GroupdID OR @GroupdID IS NULL
于 2009-11-12T16:13:06.303 回答
2
create procedure MyProc (@GroupID int = null)
as
begin
    update MyTable set ....
    where @GroupID is null or GroupID = @GroupID
end
于 2009-11-12T16:20:14.527 回答