我有一个需要 4 个参数才能执行的存储过程。但我想只传递 3 个参数来执行它。我怎样才能实现这一目标?
例如:我的存储过程通常是这样执行的。
EXEC usp_my_sp @fname = 'Sandeep',
@lname = 'Kumar',
@age = '26',
@city = 'New Delhi'**
它将返回所有名为 Sandeep Kumar
、年龄 = 26 且居住在 新德里
的人。
但我想要获取来自所有城市的所有 26 岁、名为 Sandeep Kumar
的人。这里我需要省略第四个参数。
我怎样才能实现这一目标?
谢谢, 桑迪普
最佳答案
创建具有 null 默认值的参数,并使用 coalesce()
(或 IsNUll()
)编写Where 子句谓词。
Create procedure MySP
@fName varchar(50) = null,
@lName varchar(50) = null,
@age byte = null,
@city varchar(30) = null
as
Select -- stuff
From MyTable
Where firstName = coalesce(@fName, firstName )
and lastName = coalesce(@lName, LastName)
and City = coalesce(@city , City )
and lastName = coalesce(@lName, LastName)
关于sql-server - 使用较少的输入参数执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43953397/