我正在编写一些更新表格的代码。根据用户想要做什么,它要么更新一大组记录,要么更新一个较小的记录。描述因素是组 ID。
用户可以选择是更新所有记录的表,还是只更新具有该 groupID 的记录。我想对两个实例使用相同的存储过程,其中可能有一些逻辑来区分场景。(我不希望用 90% 相同的代码编写两个存储过程。)
我不是存储过程方面的专家,我不确定是否可以传入可选参数,或者如何根据 groupID 是否存在动态生成 where 子句的一部分。欢迎任何建议。
谢谢!
我正在编写一些更新表格的代码。根据用户想要做什么,它要么更新一大组记录,要么更新一个较小的记录。描述因素是组 ID。
用户可以选择是更新所有记录的表,还是只更新具有该 groupID 的记录。我想对两个实例使用相同的存储过程,其中可能有一些逻辑来区分场景。(我不希望用 90% 相同的代码编写两个存储过程。)
我不是存储过程方面的专家,我不确定是否可以传入可选参数,或者如何根据 groupID 是否存在动态生成 where 子句的一部分。欢迎任何建议。
谢谢!
您可以使用此或“或”构造
... WHERE GroupID = ISNULL(@GroupdID, GroupID)
... WHERE GroupID = @GroupdID OR @GroupdID IS NULL
create procedure MyProc (@GroupID int = null)
as
begin
update MyTable set ....
where @GroupID is null or GroupID = @GroupID
end