有没有办法说 @topParam 值是否在使用中传递,如果不是全选。
@topParam
select TOP COALESCE ( @topParam, all )
有没有办法说 @topParam 值是否在使用中传递,如果不是全选。
@topParam
select TOP COALESCE ( @topParam, all )
这不是正确的解决方案,而是暂时的,它对您有用
@topParam
select TOP (COALESCE (@topParam, 1000000000))
认为您的结果集没有 1000000000,因此当 @topParam 为空时它将记录所有记录。
享受编码..
你最好做两个存储过程。
从根本上影响最佳查询计划的参数更改对于存储过程来说是个坏主意。
在使用 MS SQL 2005 进行测试时,我注意到参数化TOP
语句根本比硬编码值慢。
以下语法也适用 -
SELECT top (@maxNodes) @listOfInvitation = COALESCE(@listOfInvitation + ', ', '') + Cast(InviteID AS VARCHAR(10))
FROM #temp_duplicate_inviteid
WHERE cGuid = @cGUID;
如果我理解正确,我会使用CASE
CASE
WHEN @topParam > 0 THEN (SELECT WITH LIMIT)
ELSE (SELECT WITHOUT LIMIT)
END