sql-server - 使用较少的输入参数执行存储过程

标签 sql-server stored-procedures

我有一个需要 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/

相关文章:

mysql - 在 SQL 中插入一行并在存储过程中设置变量?

sql - 查找具有特定值的表、列

sql - Unicode - VARCHAR 和 NVARCHAR

c# - Entity Framework 不会包含()所有表

mysql - MS SQL 版本的 MySQL Repeat 函数

mysql - 在Mysql中将一个存储过程结果作为参数传递给另一个存储过程

mysql - 存储过程中的事务

sql-server - 通过 sp_executesql 执行存储过程

sql - 连续日期的分组岛,包括错过的周末

sql-server - AspNetUserLogins 表和 SQL Server 中索引键的最大大小