我正在编写一些更新表的代码。根据用户想要做的事情,它可以更新大量记录,也可以更小。描绘因子是组ID。
用户可以选择是为所有记录更新表,还是仅为具有该groupID的记录更新表。我想对两个实例使用相同的存储过程,可能有一点逻辑来区分这些场景。 (我不希望用90%相同的代码编写两个存储过程。)
我不是存储过程的专家,我不确定是否可以传入可选参数,或者如何动态生成where子句的一部分,具体取决于groupID是否存在。欢迎任何建议。
谢谢!
答案 0 :(得分:10)
您可以使用此或“OR”构造
... WHERE GroupID = ISNULL(@GroupdID, GroupID)
... WHERE GroupID = @GroupdID OR @GroupdID IS NULL
答案 1 :(得分:2)
create procedure MyProc (@GroupID int = null)
as
begin
update MyTable set ....
where @GroupID is null or GroupID = @GroupID
end