`
bolutes
  • 浏览: 870559 次
文章分类
社区版块
存档分类
最新评论

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 来检测是否更改了任何一些行。


分享到:
评论

相关推荐

    SQL中SET和SELECT赋值的区别

    最近的项目写的SQL比较多,经常会用到对变量赋值,而我使用SET和SELECT都会达到效果。 那就有些迷惑,这两者有什么区别呢?什么时候哪该哪个呢? 经过网上的查询,及个人练习,总结两者有以下几点主要区别: 假定有...

    Sql Server 存储过程调用存储过程接收输出参数返回值

    创建存储过程: ALTER PROCEDURE [dbo].[GetCustomers] (@rowcount INT OUTPUT) AS SELECT [CustomerID] ,[CompanyName] ,[ContactName] ,[ContactTitle] ,[Address] ...SET @rowcount=@@rowcount

    sqlserver2005利用临时表和@@RowCount提高分页查询存储过程性能示例分享

    最近发现现有框架的通用查询存储过程的性能慢,经过使用临时表的确提高了性能,现把方法分享如下

    SQL实际应用面试题

    问:我怎样才能使用SQL Server对结果集的分页进行管理? 答:您经常需要使用一次一页的形式来显示一个结果集,并保证用户可以轻松查看各个结果集页面,特别是您在为Web站点开发程序的时候。虽然您可以使用ADO ...

    SQL ASP.NET高性能分页

    SQLServer中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。先来说说实现方式: 1、我们来假定...

    SQL递归算法

    create function f_id(@parentid nvarchar(10)) returns @re table(orderid int,parentid int,title nvarchar(20),level int) as begin declare @l int set @l=0 ... while @@rowcount&gt;0 begin

    SQL语句集锦.rar

    嵌套游标的使用.txt 拷贝表格.txt 排序.txt 断开并更改数据库名称.txt 新建 文本文档 (6).txt 新建 文本文档.txt 有关NULL.txt 有关树的运用和存储过程.t 有关连接的查询语句.txt 末公开的存储过程.txt ...

    sql中循环处理当前行数据和上一行数据相加减

    以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的argument1 相加 存放到当前行的 argument2 中,比较简单。 --drop table #temptable create table #temptable ( argument1 int, argument2 ...

    SQL Server 2008编程入门经典(第3版)

    11.1.4 使用@@ROWCOUNT 11.2 批处理 11.2.1 批处理中的错误 11.2.2 何时使用批处理 11.3 sqlcmd 11.4 动态SQL:用ExEC命令动态生成代码 11.5 控制流语句 11.5.1 IFELSE语句 11.5.2 CASE语句 11.5.3 用WHILE语句进行...

    SQL21日自学通

    使用SQL 来生成SQL 语句的目的351 几个SQL*PLUS 命令352 SET ECHO ON/OFF353 SET FEEDBACK ON/OFF353 SET HEADING ON/OFF 353 SPOOL FILENAME/OFF353 START FILENAME354 ED FILENAME354 计算所有的表中的行数354 为...

    JAVA 与 Sql学习笔记

    4.用%BULK_ROWCOUNT 属性计算FORALL迭代影响行数 ,用%BULK_ROWCOUNT 属性计算FORALL迭代影响行数 5.用BULK COLLECT子句取回查询结果至集合中 6.用LIMIT 子句限制批取出操作行 7.用RETURNING INTO子句取回DML结果至...

    SQL.Server.2008编程入门经典(第3版).part2.rar

    11.1.4 使用@@ROWCOUNT 11.2 批处理 11.2.1 批处理中的错误 11.2.2 何时使用批处理 11.3 sqlcmd 11.4 动态SQL:用ExEC命令动态生成代码 11.5 控制流语句 11.5.1 IFELSE语句 11.5.2 CASE语句 11.5.3 用WHILE语句进行...

    SQL语句生成及分析器(中文绿色)

    Limit(MySQL),Set RowCount(Sybase)) 3.1.3 字段表达式或者计算字段 3.2 选择表 (From) 3.3 条件筛选 (Where) 3.4 分组 (Group By) 3.5 组内条件 (Having) 3.6 排序 (Order By) 3.7 数据表的内连接、...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    11.1.4 使用@@ROWCOUNT 11.2 批处理 11.2.1 批处理中的错误 11.2.2 何时使用批处理 11.3 sqlcmd 11.4 动态SQL:用ExEC命令动态生成代码 11.5 控制流语句 11.5.1 IFELSE语句 11.5.2 CASE语句 11.5.3 用WHILE语句进行...

    浅谈PDO的rowCount函数

    PDO有一个函数PDOStatement::rowCount返回上一个SQL语句影响的行数。 rowCount函数对于DELETE, INSERT, 或者UPDATE语句的结果是正确的,但对于select语句则与数据库的实现相关。有些数据库在执行select语句时会将结果...

    C# 调用存储过程简单完整的实例代码

    CREATE PROC P_TEST@Name VARCHAR(20), @Rowcount INT OUTPUT AS BEGIN SELECT * FROM T_Customer WHERE NAME=@Name SET @Rowcount=@@ROWCOUNT END GO —————————————————————————————-...

    sql编程的几个常识

    1、@@ROWCOUNT可以判断上一行查询操作得到的列数; 2、给变量赋值用SET @Pr_id = 13; 3、察看是否有符合条件的记录IF EXISTS (Select name FROM sysobjects Where name = ‘reminder’ AND type = ...

    PHP PDOStatement::rowCount讲解

    PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数(PHP 5 &gt;= 5.1.0, PECL pdo &gt;= 0.1.0) 说明 语法 int PDOStatement::rowCount ( void ) PDOStatement::rowCount()返回上一个由对应的 PDOStatement 对象...

Global site tag (gtag.js) - Google Analytics