【发布时间】:2010-04-22 13:34:18
【问题描述】:
我想在我的 mssql 存储过程中使用一个参数来在小结果和详细结果之间切换(出于可维护性、性能和网络负载原因)。
如果参数设置为 1,我会得到所有列,否则只有一两个最重要的列。 它以非常有限的方式工作,如下所示:
ALTER PROCEDURE [dbo].[GetAllUsers]
@detail BIT
AS
IF @detail = 1 SELECT UserName, Title, UserID FROM Users
ELSE SELECT Username FROM Users
但我想使用组合的 WHEN 子句。 以下是我尝试过的,但这不起作用。
ALTER PROCEDURE [dbo].[GetAllUsers]
@detail BIT
AS
CASE @detail
WHEN 1 THEN SELECT UserName, Title, UserID
ELSE SELECT UserName END
FROM Users
WHERE UserID < 5
有没有什么办法可以达到这样的效果?
【问题讨论】:
标签: sql stored-procedures select case-statement