1

是否可以创建一个存储过程,其参数都是可选的,但必须至少提供一个参数?

例如,如果我有一个更新记录的过程,我必须传入一个记录 id,然后至少要更新一列。该程序应检查以确保提供至少一个附加参数/列。

4

3 回答 3

2

我会将 if 语句作为第一个操作。

IF @param1 is null and @param2 isnul and @param3 is null
Begin
--steps tpo raise an error or exit the proc
End
于 2012-07-12T03:24:19.833 回答
1

我会用我选择的编程语言而不是存储过程来执行此操作。为什么?这是TSQL不太擅长的逻辑检查类型;检查它的语法将是“icky”,并且会很慢。

此外,存储过程为您提供的最大性能优势是运行已编译的 SQL。在这种情况下,由于需要动态构建 SQL,您将失去该优势。因此,为什么将它作为存储过程呢?

于 2012-07-12T03:28:26.550 回答
0

在 where 子句中使用以下内容

where
(isnull(@param1,0)=0 or id=@param1)
and 
(isnull(@param2,'')='' or name=@param2)
于 2012-07-12T06:00:47.030 回答