是否可以创建一个存储过程,其参数都是可选的,但必须至少提供一个参数?
例如,如果我有一个更新记录的过程,我必须传入一个记录 id,然后至少要更新一列。该程序应检查以确保提供至少一个附加参数/列。
是否可以创建一个存储过程,其参数都是可选的,但必须至少提供一个参数?
例如,如果我有一个更新记录的过程,我必须传入一个记录 id,然后至少要更新一列。该程序应检查以确保提供至少一个附加参数/列。
我会将 if 语句作为第一个操作。
IF @param1 is null and @param2 isnul and @param3 is null
Begin
--steps tpo raise an error or exit the proc
End
我会用我选择的编程语言而不是存储过程来执行此操作。为什么?这是TSQL不太擅长的逻辑检查类型;检查它的语法将是“icky”,并且会很慢。
此外,存储过程为您提供的最大性能优势是运行已编译的 SQL。在这种情况下,由于需要动态构建 SQL,您将失去该优势。因此,为什么将它作为存储过程呢?
在 where 子句中使用以下内容
where
(isnull(@param1,0)=0 or id=@param1)
and
(isnull(@param2,'')='' or name=@param2)