带有可选参数的存储过程,但至少需要一个参数

时间:2012-07-12 03:07:37

标签: sql sql-server sql-server-2008 stored-procedures

是否可以创建一个包含所有参数的存储过程,这些参数都是可选的,但必须至少提供一个参数?

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

3 个答案:

答案 0 :(得分:2)

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

IF @param1 is null and @param2 isnul and @param3 is null
Begin
--steps tpo raise an error or exit the proc
End

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

在where子句

中使用以下内容
where
(isnull(@param1,0)=0 or id=@param1)
and 
(isnull(@param2,'')='' or name=@param2)
相关问题