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

时间: 2024-10-25 08:56:48

SET ROWCOUNT的相关文章

@@ROWCOUNT,@@IDENTITY, SCOPE_IDENTITY()

@@ROWCOUNT 返回受上一语句影响的行数,常用在 Update,Insert,Delete.如果行数大于 20 亿,请使用 ROWCOUNT_BIG. @@IDENTITY  返回最后插入的标识值的系统函数.可以用在插入数据后把标识值返回(不是最好的选择)  @@identity使用注意事项: 我们要慎用@@IDENTITY,原因是 @@IDENTITY 它总是获取最后一条变更数据的自增字段的值,而忽略了进行变更操作所在的范围约束.比如,我有表 A 和表 B 两个表,现在我在表 A 上定义

sql%rowcount含义

sql%rowcount含义 (2010-12-22 16:00:45) 转载▼ 标签: 杂谈 分类: sql知识点 sql%rowcount中的sql是oracle的内部游标,rowcount的意思是之前的dml sql语句影响的多少行数据.如果是delete操作rowcount就是delete的数据,如果是insert,就是插入的数量......

oracle中的sql%rowcount

sql%rowcount用于记录修改的条数,就如你在sqlplus下执行delete from之后提示已删除xx行一样,这个参数必须要在一个修改语句和commit之间放置,否则你就得不到正确的修改行数. 例如: declare n number; begin insert into test_a select level lv from dual connect by level<500; n:=sql%rowcount; commit; dbms_output.put_line(n); end

SQL中rowcount与@@rowcount

1 rowcount的用法: 2 3 rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例, 4 set rowcount 10 5 select * from 表A 6 7 这样的查询只会返回表A中的前10条数据.它和 "select top 10 * from 表A" 的作用一样.注意一点,set rowcount 的设置会在整个会话中有效.比如下面的sql示例: 8 set rowcount 10 9 select * from 表A 10

@@ROWCOUNT (Transact-SQL)

返回受上一语句影响的行数.如果行数大于 20 亿,请使用 ROWCOUNT_BIG. Transact-SQL 语法约定 语法 @@ROWCOUNT返回类型 int 备注 Transact-SQL 语句可以通过下列方式设置 @@ROWCOUNT 的值: 将 @@ROWCOUNT 设置为受影响或被读取的行的数目.可以将行发送到客户端,也可以不发送. 保留前一个语句执行中的 @@ROWCOUNT. 将 @@ROWCOUNT 重置为 0 但不将该值返回到客户端. 执行简单分配的语句始终将 @@ROWC

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 RowCo

Oracle PLSQL Demo - 13.游标的各种属性[Found NotFound ISOpen RowCount CURSOR]

declare r_emp scott.emp%rowtype; cursor cur_emp is select t.* from scott.emp t; begin open cur_emp; if cur_emp%isopen then dbms_output.put_line('is open...'); end if; loop fetch cur_emp into r_emp; if cur_emp%found then dbms_output.put_line('found...

7.qfilesystemmodel rowcount 为什么为0? 一个简单的model类的例子

任务: 1.新建一个空的mainwindow项目 2.debug下编译得到一个文件夹,应用程序输出这个文件夹中的文件(不显示文件夹中的文件夹) 3.使用QFileSystemModel完成. 本例显示结果: Makefile Makefile.Debug Makefile.Release ui_mainwindow (debug和release是文件夹,不在应用程序输出中) mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #inclu

GridView.RowCount与DataTable.Rows.Count

'获取网格部件记录的条数msgbox(网格部件1.GridView.RowCount)'获取网格部件数据的行数msgbox(网格部件1.DataTable.Rows.Count) 在没有添加分组的情况下,这两条代码运行结果都为3,而如果有分组时,第一条运行结果为6,第二条运行结果为3:如下图所示 原文地址:http://bbs.delit.cn/thread-470-1-1.html 转载请注明出处: 撰写人:度量科技http://www.delit.cn