Mar*_*rks 1 sql select stored-procedures case-statement
我想在我的mssql存储过程中使用一个参数来在小的和详细的结果之间切换(出于可维护性,性能和网络负载的原因).
如果参数设置为1,我将获得所有列,否则只有一个或两个最重要的列.它的工作方式非常有限:
ALTER PROCEDURE [dbo].[GetAllUsers]
@detail BIT
AS
IF @detail = 1 SELECT UserName, Title, UserID FROM Users
ELSE SELECT Username FROM Users
Run Code Online (Sandbox Code Playgroud)
但我想使用合并的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
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这样的事情?
我认为让一个存储过程根据输入变量返回不同的记录类型是一种糟糕的API设计.我认为你应该创建两个存储过程,GetAllUsers
并且GetAllUsersWithDetails
.
归档时间: |
|
查看次数: |
1364 次 |
最近记录: |