首页 > 数据库 >001.SQL的@@ROWCOUNT使用

001.SQL的@@ROWCOUNT使用

时间:2023-06-29 13:37:59浏览次数:48  
标签:语句 查询 ROWCOUNT 001 行数 SQL SELECT 客户端


在线演示: http://v.youku.com/v_show/id_XMzMyMTg3MzI4.html
演示下载: http://115.com/file/antb46tj

演示重点
SQL的系统变量@@ROWCOUNT返回的是上一语句影响的行数。
最早的时候,我很自然的认为这个被影响的行数应该是类似于INSERT、UPDATE、DELETE这样的语句。
因为,它们很明显是会对数据产生影响的命令。
然而事实并非如此。
当我们执行SELECT查询语句的时候,@@ROWCOUNT也会有数值,该数值就是检索到的数据的记录数。
这是第一点。
另外一点,就是当我们执行类似于PRINT这样的语句时,它也会改变@@ROWCOUNT的数值。
通常情况下,会使@@ROWCOUNT重新归零。
因此,当你既想要打印@@ROWCOUNT的值,又想要使用此数据做一些其他操作的话,比如判断,
正确的做法是,先将@@ROWCOUNT的值保存到临时变量中,
然后再通过临时变量来来做你想要做的事情。
具体内容请参看演示视频!
光脚丫思考 22:55 2011-12-13


下面附带是微软MSDN上有关@@ROWCOUNT的说明。

返回受上一语句影响 的行数。如果行数大于20亿,请使用ROWCOUNT_BIG。

语法@@ROWCOUNT
返回类型:int
备注
Transact-SQL 语句可以通过下列方式设置@@ROWCOUNT的值:
将 @@ROWCOUNT 设置为受影响或被读取的行的数目。可以将行发送到客户端,也可以不发送。
保留前一个语句执行中的 @@ROWCOUNT。
将 @@ROWCOUNT 重置为 0 但不将该值返回到客户端。
执行简单分配的语句始终将 @@ROWCOUNT 值设置为 1。不将任何行发送到客户端。这些语句的示例如下:SET @local_variable、RETURN、READTEXT 以及不带查询Select 语句,如 SELECT GETDATE() 或 SELECT 'Generic Text'。
在查询中执行分配或使用 RETURN 的语句将 @@ROWCOUNT 值设置为受查询影响或由查询读取的行数,例如:SELECT @local_variable = c1 FROM t1。
数据操作语言 (DML) 语句将 @@ROWCOUNT 值设置为受查询影响的行数,并将该值返回到客户端。DML 语句不会将任何行发送到客户端。
DECLARE CURSOR 和 FETCH 将 @@ROWCOUNT 值设置为 1。
EXECUTE 语句保留前一个 @@ROWCOUNT。
USE、SET <option>、DEALLOCATE CURSOR、CLOSE CURSOR、BEGIN TRANSACTION 或 COMMIT TRANSACTION 等语句将 ROWCOUNT 值重置为 0。
示例
以下示例执行 UPDATE 语句并使用 @@ROWCOUNT 来检测是否更改了任何一些行。

USE AdventureWorks;
GO
UPDATE HumanResources.Employee 
 SET Title = N'Executive'
 WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
 PRINT 'Warning: No rows were updated';
GO

 

标签:语句,查询,ROWCOUNT,001,行数,SQL,SELECT,客户端
From: https://blog.51cto.com/u_3319687/6581459

相关文章

  • mysql: [Warning] Using a password on the command line interface can be insecure.
      https://zhuanlan.zhihu.com/p/542166965 ......
  • 自由软件基金会为甲骨文支招 放弃MySQL
    本文发表于2009-10-2608:3911/2/200911:45:39AM据国外媒体报道,自由软件基金会欧洲分会(以下简称FSFE)周五表示,甲骨文应该将MySQL数据库交给一家独立的非营利机构,以便让欧盟尽早批准甲骨文收购Sun交易。FSFE称,甲骨文应该将MySQL数据库交给一家独立的非营利机构打理,这家机构要把......
  • 光脚丫学LINQ(014):LINQ to SQL简介
    视频演示:http://u.115.com/file/f29f7838f6 LINQtoSQL是.NETFramework3.5版的一个组件,提供了用于将关系数据作为对象管理的运行时基础结构。说明关系数据显示为由二维表(关系或平面文件)组成的集合,其中公共列将表互相关联起来。若要有效地使用LINQtoSQL,您必须略为熟悉关......
  • 光脚丫学LINQ(001):获取数据源
    视频演示:http://u.115.com/file/f2b79e6286 本主题简要介绍LINQ查询表达式,以及您在查询中执行的一些典型类型的操作。下面各主题中提供了更详细的信息:获取数据源在LINQ查询中,第一步是指定数据源。像在大多数编程语言中一样,在C#中,必须先声明变量,才能使用它。在LINQ查询中,最......
  • SQL Server 表中自增长ID列,因删除而不连续。可以使用临时表
    1.使用局部临时表来调整自增长列select*from#newtempfromgrade--相当于备份truncatetablegrade--删除数据insertintogradeselectclassnamefrom#newtemp2.使用全局临时表来调整自增长列select*from##tempfromgrade--相当于备份truncatetableg......
  • Mysql十题
    181.超过经理收入的员工SQL架构表:Employee +-------------+---------+|ColumnName|Type|+-------------+---------+|id|int||name|varchar||salary|int||managerId|int|+-------------+---------+Id......
  • 利用代码生成工具快速生成基于SqlSugar框架的Winform界面项目
    我们接触一个新事物的时候,如果一个事物能够给我们带来非常直观的感官认识,那么我们就很容易接受,反之可能需要很长时间的潜移默化的了解认识才能接受。万物化繁为简,透过本质看表象,往往也是一个认知迭代深入的过程。在我介绍很多篇随笔《SqlSugar开发框架》,能够看完的肯定不会是一开......
  • SQL Server查询重复数据
    1.查询单列重复select*fromtablewherenamein(selectnamefromtablegroupbynamehavingcount(name)>1)2.查询多列重复SELECTa.*FROMtablea,(SELECTname,codeFROMtableGROUPBYname,codeHAVINGCOUNT(1)>1)ASbWHEREa.name=b.nameANDa.......
  • java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check t
    问题报错代码org.apache.ibatis.exceptions.PersistenceException:###Errorqueryingdatabase.Cause:java.sql.SQLSyntaxErrorException:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntax......
  • Mysql必备技能点
    一、SQL顺序1.sql语句执行顺序:from-->where-->groupby-->having-->select--->orderby;我们先执行from,join来确定表之间的连接关系,得到初步的数据where对数据进行普通的初步的筛选groupby分组各组分别执行having中的普通筛选或者聚合函数筛选。然后把再根据我们要......