SET ROWCOUNT
使 Microsoft® SQL Server™ 在返回指定的行数之后停止处理查询。 语法 SET ROWCOUNT { number | @number_var } 参数 number | @number_var 是在停止给定查询之前要处理的行数(整数)。 注释 建议将当前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 语句重新编写为使用 TOP 语法。有关更多信息,请参见 DELETE、INSERT 或 UPDATE。 对于在远程表和本地及远程分区视图上执行的 INSERT、UPDATE 和 DELETE 语句,忽略 SET ROWCOUNT 选项设置。 若要关闭该选项(以便返回所有的行),请将 SET ROWCOUNT 指定为 0。 说明 设置 SET ROWCOUNT 选项将使大多数 Transact-SQL 语句在已受指定数目的行影响后停止处理。这包括触发器和 INSERT、UPDATE 及 DELETE 等数据修改语句。ROWCOUNT 选项对动态游标无效,但限制键集的行集和不感知游标。使用该选项时应谨慎,它主要与 SELECT 语句一起使用。 如果行数的值较小,则 SET ROWCOUNT 替代 SELECT 语句 TOP 关键字。 SET ROWCOUNT 的设置是在执行或运行时设置,而不是在分析时设置。 权限 SET ROWCOUNT 权限默认授予所有用户。 示例 SET ROWCOUNT 在指定的行数后停止处理。在下例中,注意有 x 行满足预付款少于或等于 $5,000 的条件;但是,从更新所返回的行数中可以看出并非所有的行都得到处理。ROWCOUNT 影响所有的 Transact-SQL 语句。 USE pubs GO SELECT count(*) AS Cnt FROM titles WHERE advance >= 5000 GO 下面是结果集: Cnt ----------- 11 (1 row(s) affected) 现在,将 ROWCOUNT 设置为 4,并更新预付款等于或大于 $5,000 的所有行。 -- SET ROWCOUNT to 4. SET ROWCOUNT 4 GO UPDATE titles SET advance = 5000 WHERE advance >= 5000 Set Rowcount 分页(转)2007-01-11 10:11 A.M. SQL Server中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。先来说说实现方式: 1、我们来假定Table中有一个已经建立了索引的主键字段ID(整数型),我们将按照这个字段来取数据进行分页。 2、页的大小我们放在@PageSize中 3、当前页号我们放在@CurrentPage中 4、如何让记录指针快速滚动到我们要取的数据开头的那一行呢,这是关键所在!有了Set RowCount,我们就很容易实现了。 5、如果我们成功地滚动记录指针到我们要取的数据的开头的那一行,然后我们把那一行的记录的ID字段的值记录下来,那么,利用Top和条件,我们就很容易的得到指定页的数据了。当然,有了Set RowCount,我们难道还用Top么? 看看Set Rowcount怎么来帮我们的忙吧:Declare @ID intDeclare @MoveRecords intDeclare @CurrentPage intDeclare @PageSize intset @PageSize=5set @CurrentPage=1--@CurrentPage和@PageSize是传入参数Set @MoveRecords=@CurrentPage * @PageSize+1--下面两行实现快速滚动到我们要取的数据的行,并把ID记录下来Set Rowcount @MoveRecordsSelect @ID=userid from usersinfo Order by useridSet Rowcount @PageSize--最恨为了减少麻烦使用*了,但是在这里为了说明方便,暂时用一下Select * From usersinfo Where userid>=@ID Order By userid