rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例,set rowcount 10
select * from 表A这样的查询只会返回表A中的前10条数据。它和 "select top 10 * from 表A" 的作用一样。注意一点,set rowcount 的设置会在整个会话中有效。比如下面的sql示例:set rowcount 10
select * from 表A
go
select * from 表B表A和表B都只会返回前10条数据。
要取消set rowcount的限定,只要设置 set rowcount 0 就可以了。从上面的示例来看,好像rowcount没有多大的用处,限制查询结果的数据,我们使用top就可以了,而且还不用担心如果忘记取消rowcount的设置而对后面的sql的影响。 但在下面的情况下,rowcount的设置就会给我们带来很大的方便哦。我们都知道select top 后面不能加参数,只能使用一个具体的int类型的数字。如果我们想实现top后面跟参数的功能,就只有构造sql字符串,然后使用exec来执行了。比如:declare @n int
declare @sql nvarchar(1000)
set @n=10
set @sql='select top '+cast(@n as varchar(10))+' * from 表A'
exec(@sql)先不说上面语句中exec的性能,单从sql的可读性上来看就很不友好。但如果我们使用rowcount来解决,就显的很优雅了,因为set rowcount后面是可以使用参数的。示例如下:declare @n int
set @n=10
set rowcount @n
select * from 表A注意:set rowcount的限定对修改,删除一样有效。比如下面的示例:set rowcount 10
update 表a set qty=10 where id<100这样,上面语句最多只会修改表a中id<100的前10条数据(假设id<100的数据数量大于10)删除也是一样set rowcount 10
delete from 表a这样,上面的语句最多只会删除表a中前10条数据。

@@Rowcount的用法


@@Rowcount与Rowcount看起来很像,只相差了两个@,但它们的功能是不一样的,@@Rowcount主要是返回上次sql语句所
影响的数据行数,比如:select top 2 * from 表A
select @@Rowcount如果表A中的数据量大于或等于2,那么select @@Rowcount就会返回2,如果只有1条或0条数据,那么select @@Rowcount就会返回1或者0。注意,不要把@@Rowcount理解为只返回查询的结果数量,删除,修改,新增等语句,也会正确的返回@@Rowcount值。比如:update 表A set gid='a' where gid='a'
select @@Rowcount如果表A中存在gid='a'的数据,那么select @@Rowcount就会返回它所修改数据的行数,如果不存在gid='a'的数据,
那么select @@Rowcount就会返回0,删除与新增都是同样。那么,哪些地方我们会用到@@Rowcount呢?
一、可能我们见到@@Rowcount身影最多的地方是触发器中,好的触发器,一般都会在最前面加上if @@rowcount=0 return语句,比如:create trigger ti_tablea on tablea after update
as
if @@rowcount=0 return
……这样,如果tablea被修改的数据行数为0,那么触发器ti_tablea就会直接退出,而不用执行后面的代码了。二、第二个可能用到的地方就是我们可以使用@@rowcount来作递归或循环。比如下面示例:declare @n int
set @n=1
select * from client_goods where id=@nwhile @@rowcount>0
begin
set @n=@n+1
select * from client_goods where id=@n
end这个示例是先查询client_goods中是否有id=1的数据,如果有,再查询是否有id=2的数据,一直查下去,直到id
没有连续为止。当然大家在看这个示例的时候不要考虑这个示例的意义,它只是说明了@@rowcount可以作为循环条件来用。

SQL Server中Rowcount与@@Rowcount的用法相关推荐

  1. SQL Server 中 with tmp 临时表的用法

    SQL Server 中 with tmp 临时表的用法 ----------with临时表用法,有时候采用临时表比采用in的效率更高,避免了全表扫描. 实例中实现了查询普通题.大题.子题目的sql ...

  2. SQL Server中的锁类型及用法(转载)

    一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新  A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读  ...

  3. SQL Server中LIKE和PATINDEX的用法

    在SQL Server中,能使用通配符的只有2个:LIKE.PATINDEX. 不过LIKE支持2种通配符转义,无限制最全面:而PATINDEX只支持最简单的通配符转义([]转义),限制较多. LIK ...

  4. SQL Server中osql/sqlcmd的基本用法

    [转自] http://www.cnblogs.com/wontonJ/archive/2011/06/18/2084400.html 这段时间在做项目的时候,遇到一个问题,客户的程序要架设在自己的服 ...

  5. Sql Server中 master.dbo.spt_values 的用法

    master.dbo.spt_values是一个数据库常量表,表里都是一些枚举数据. 我们可以先查询一下看表里都有什么☞ select * from master.dbo.spt_values 查询得 ...

  6. MS SQL SERVER 中几个函数的用法

    1.STUFF 将第一个参数,从第start位置开始的length个字符(包含第start位置,位置从1开始),用第四个参数替换. Syntax ( character_expression , st ...

  7. SQL Server中identity(自增)的用法

    目录 零.码仙励志 一.identity的基本用法 1.含义 2.语法 3.实例演示 4.删除一条记录接着插入 二.重新设置identity的值 1.语法 2.实例演示 三.向identity字段插入 ...

  8. SQL Server中的登录触发器概述

    This article gives you an overview of Logon triggers in SQL Server and its usage to control SQL Serv ...

  9. mysql identity sql_SQL Server中identity(自增)的用法详解

    一.identity的基本用法 1.含义 identity表示该字段的值会自动更新,不需要我们维护,通常情况下我们不可以直接给identity修饰的字符赋值,否则编译时会报错 2.语法 列名 数据类型 ...

  10. SQL Server中@@ROWCOUNT的用法

    转自:http://www.studyofnet.com/news/146.html 本文导读:@@ROWCOUNT返回上一语句受影响的行数!和@ERROR一样的特性,在每一条语句执行后都将被重置,如 ...

最新文章

  1. Pandas入门教程
  2. python银行开户_Python数据挖掘与Stata应用实证寒假工作坊
  3. TMS320C6678中Hyperlink接口的理解
  4. SqlServer项目经验:介质集有2个介质簇,但只提供了1个。必须提供所有成员
  5. A review of 3D/2D registration methods for image-guided interventions(2)
  6. Vue build之后访问dist目录静态资源不加载问题解决
  7. C++ public、protected、private区别
  8. 关于Ueditor存储在mysqlUTF-8乱码的问题
  9. 2020年华工计算机应用基础随堂作业,《计算机应用基础》随堂练习-2020年华工网络教育.docx...
  10. 【笔记】Altera - Quartus II使用方法——工程创建、Modelsim破解/仿真、Verilog编写、举例(待续)
  11. SaaS-HRM(5)系统用户权限设计(角色管理、权限和资源管理)
  12. CTF 杂项 隐写术 密码学及编码 取证技术
  13. 电子工程师常用的单位转换
  14. 用matlab求带参数d积分,用MATLAB求定积分
  15. 无线信道仿真 matlab,基于Matlab的无线信道仿真.doc
  16. Elasticsearch(Transport Client)常用操作
  17. 卡内基梅隆大学计算机博士申请,2020年卡内基梅隆大学博士申请流程
  18. 打印1000年到2000年之间的闰年
  19. Python实现文本相似度比较分析
  20. Python报错:‘unicodeescape‘ codec can‘t decode bytes in position 2-3: truncated \UXXXXXXXX escape

热门文章

  1. 微信小程序:纯头像微信小程序源码下载,多分类头像自动采集无需服务器和域名
  2. 如何使用 Win32 Disk Imager 将原始磁盘映像文件写入 USB
  3. 运行spark——2.spark-submit
  4. 使用ldapsearch进行数据查询
  5. IDS uEye XCP USB3相机驱动安装ubuntu18.04
  6. Bug系列---------图片库崩溃(内存泄露)
  7. Hive总结 --hive表的创建,删除和修改
  8. 手把手教你ubuntu下移植MJPG-streamer
  9. 免费虚拟主机怎么申请?
  10. 彩色图像和三维数组结构分析