当输入参数为“ALL”时,T-SQL 存储过程返回所有记录

Pin*_*ing 1 t-sql sql-server stored-procedures

我有一个带有参数的存储过程:

@desk VARCHAR(50)
Run Code Online (Sandbox Code Playgroud)

我想要

SELECT *
FROM dbo.Desk
WHERE DeskName = @desk
Run Code Online (Sandbox Code Playgroud)

并且我还想返回@desk = 'All'.的值时的所有记录。

做到这一点的最佳方法是什么?

Dav*_*d M 5

只需在您的WHERE子句中包含此条件,如下所示:

SELECT  *
FROM    dbo.Desk
WHERE   DeskName = @desk
OR      @desk = 'All'
Run Code Online (Sandbox Code Playgroud)

正如 Martin Smith 在下面评论的那样,它的性能不会是最佳的 - 如果表很小,那么您可能更喜欢这种简洁的方法而不是性能更高的选项,只是为了 T-SQL 代码的清晰度/可维护性,但是也看看他链接到的文章......