在T-Sql中,一般top数据不确定的情况下,都是拼sql,这样无论是效率还是可读性都不好。应该使用下面参数化Top方式:

declare @TopCount int 
set @TopCount = 100 
select top (@TopCount) * from AdventureWorks.HumanResources.Employee

如果有Like等字句,一定要拼Sql的话,也应该使用sp_executesql来执行,示例如下:

declare @TopCount int –定义top 数量 
set @TopCount = 100 
declare @Title nvarchar(100) –定义like内容 
set @Title = \’%n%\’ 
declare @SelectSql nvarchar(max) 
set @SelectSql = \’ 
select top (@TopCountPar) * 
from AdventureWorks.HumanResources.Employee 
where Title like @TitlePar\’ –使用参数化的top和like

–使用sp_executesql 来执行,可以提高效率 
exec sp_executesql @SelectSql, 
N\’@TopCountPar as int,@TitlePar as nvarchar(100)\’, 
@TopCountPar = @TopCount,@TitlePar = @Title

 转载自:http://www.aichengxu.com/view/834303

版权声明:本文为onesmail原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/onesmail/p/6268220.html