SQL的@@ROWCOUNT使用

在线演示: 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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值