zoukankan      html  css  js  c++  java
  • SET ROWCOUNT

    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 int
    Declare @MoveRecords int
    Declare @CurrentPage int
    Declare @PageSize int
    set @PageSize=5
    set @CurrentPage=1
    --@CurrentPage和@PageSize是传入参数
    Set @MoveRecords=@CurrentPage * @PageSize+1
    --下面两行实现快速滚动到我们要取的数据的行,并把ID记录下来
    Set Rowcount @MoveRecords
    Select @ID=userid from usersinfo Order by userid
    Set Rowcount @PageSize
    --最恨为了减少麻烦使用*了,但是在这里为了说明方便,暂时用一下
    Select * From usersinfo Where userid>=@ID Order By userid

  • 相关阅读:
    struts2之拦截器
    JavaWeb开发之HttpServletResponse
    JavaWeb开发之Servlet
    HTTP协议详解
    字符串
    数组
    第一个只出现一次的字符
    DDoS的类型及原理
    引用变量&和指针*的区别
    赋值运算符的重载
  • 原文地址:https://www.cnblogs.com/qxoffice2008/p/4220023.html
Copyright © 2011-2022 走看看