一直不学无术,所以也就一直懵懵懂懂。
之前有朋友问起以下代码怎么不行:
declare @rowcount int;
set @rowcount = 10;
select top @rowcount * from table
set @rowcount = 10;
select top @rowcount * from table
这个是因为,TOP 只接受常量做数量参数,而不能接受变量,给对方提供的解决方案是:
declare @sql nvarchar(4000);
set @sql = 'select top ' + convert(varchar(10), @rowcount) + ' * from table'
exec(@sql)
set @sql = 'select top ' + convert(varchar(10), @rowcount) + ' * from table'
exec(@sql)
刚在博问里,人问起 rowcount 的用法,查了下,文档里是这样说的:
使 SQL Server 在返回指定的行数之后停止处理查询。
Transact-SQL 语法约定
SET ROWCOUNT { number | @number_var } ![]()
-
number | @number_var
-
在停止特定查询之前要处理的行数(整数)。
在停止特定查询之前要处理的行数(整数)。