set RowCount 与 top n

有的时候,使用top n中的n是一个变量,那就需要用()来完成:

	declare @count1 int
	set @count1 = 8
	select top <strong>(@count1)</strong> * from MyTable


如果用set RowCount一样可以达到相同的效果

	declare @count1 int
	set @count1 = 8
        set RowCount @count1
	select * from MyTable

但注意,使用set RowCount有副作用的,一旦设置了,对于后面的语句都会影响到,而且SQL Server在后续的版本中对此有更改,所以要小心使用。
重要提示:
在 SQL Server 的下一个版本中,使用 SET ROWCOUNT 将不会影响 DELETE、INSERT 和 UPDATE 语句。在新的开发工作中,避免将 SET ROWCOUNT 语句与 DELETE、INSERT 和 UPDATE 语句一起使用,并计划修改当前使用该语句的应用程序。另外,对于当前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 语句,建议您使用 TOP 语法重写它们。有关详细信息,请参阅 DELETE (Transact-SQL)、INSERT (Transact-SQL) 或 UPDATE (Transact-SQL)。

你可能感兴趣的:(set RowCount 与 top n)