我想在我的mssql存储过程中使用参数在小的和详细的结果(用于可维护性,性能和网络负载的原因)之间切换。SQL Server - 如何在2个可能的SELECT语句之间切换
如果参数设置为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
有什么办法可以达到这样的效果吗?
我也想过这个。所以我想我会把它放在两个。 其中一个原因是,where子句中的更改会影响小版本和详细版本。我期望where子句变得很大,没有这样的'技巧',我有两个大的where子句,在2个存储过程中完全相同。 – Marks 2010-04-22 13:54:56