2

有没有办法说 @topParam 值是否在使用中传递,如果不是全选。

@topParam
select TOP COALESCE ( @topParam, all )
4

4 回答 4

4

这不是正确的解决方案,而是暂时的,它对您有用

@topParam
select TOP (COALESCE (@topParam, 1000000000))

认为您的结果集没有 1000000000,因此当 @topParam 为空时它将记录所有记录。

享受编码..

于 2013-05-01T10:08:38.563 回答
0

你最好做两个存储过程。

从根本上影响最佳查询计划的参数更改对于存储过程来说是个坏主意。

在使用 MS SQL 2005 进行测试时,我注意到参数化TOP语句根本比硬编码值慢。

于 2013-05-01T09:54:47.560 回答
0

以下语法也适用 -

SELECT top (@maxNodes) @listOfInvitation = COALESCE(@listOfInvitation + ', ', '') + Cast(InviteID AS VARCHAR(10))
    FROM #temp_duplicate_inviteid 
    WHERE cGuid = @cGUID;
于 2015-02-10T09:15:48.440 回答
0

如果我理解正确,我会使用CASE

CASE 
WHEN @topParam > 0 THEN (SELECT WITH LIMIT)
ELSE (SELECT WITHOUT LIMIT)
END
于 2013-05-01T09:52:08.820 回答