在线演示: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语句使用示例”、“T-SQL程序设计”以及“局部变量@@函数”。 首先,让我们来看一下“SQL语句使用示例”。SQL中最基础且最常用的语句是SELECT,它用于从数据库中检索数据。例如,`SELECT * ...
总结起来,这个示例展示了如何在SQL Server 2005中利用临时表和`@@RowCount`优化分页查询。通过一次性计算总页数并采用“不包含”策略,减少了多次扫描数据集的需求,从而提升了性能。然而,这种方法也有其局限性,...
在SQL Server中,执行动态SQL或存储过程时,开发人员通常面临选择使用`EXEC`还是`sp_executesql`的问题。这两种方法虽然都能达到目的,但在功能、性能及安全性等方面存在显著差异。本文将详细介绍这两者的区别,并...
### 使用 SqlServer 内部存储过程实现快速分页方法详解 在数据库操作中,分页是一种常见的需求,尤其是在处理大量数据时。通过合理地分页显示数据,不仅可以提高应用程序的性能,还可以提升用户体验。本文将详细...
4. **`TOP`参数**:在SQL Server 2008 R2之后,`ROWCOUNT`的使用被建议替换为`TOP`参数。`TOP`可以限制查询返回的行数,提供了更灵活的控制方式,尤其是在配合`ORDER BY`子句进行排序时。 5. **删除数据并存档**:...
EXEC sp_executesql @sql, N'@rowCount INT OUTPUT', @rowCount = @rowCount OUTPUT; SELECT @rowCount; ``` 在这个例子中,@rowCount作为输出参数,可以捕获并显示Orders表中的记录数。 总结来说,虽然EXEC在...
3. 使用`SET ROWCOUNT`: `SET ROWCOUNT`语句可以限制执行的SELECT、INSERT、UPDATE或DELETE语句所影响的行数。在分页查询中,可以通过先获取第一行的ID,然后限制查询范围来实现分页。 ```sql DECLARE @first_...
需要注意的是,使用`SET ROWCOUNT`来控制每次SELECT返回的行数,但这种方法可能会影响其他DML操作。为了避免这种影响,我们可以使用`TOP 1`来代替: ```sql WHILE EXISTS (SELECT [id] FROM @temp) BEGIN SELECT ...
SQL Server 中的 @@ROWCOUNT 变量可以获取最近一次查询或操作所影响的行数,而在 MySQL 中,需要使用 row_count() 函数来获取最近一次查询或操作所影响的行数。需要注意的是,MySQL 的 row_count() 函数只对 update...
通过合理运用ROWCOUNT,不仅可以提升存储过程的效率和可维护性,还能避免使用EXEC来执行构造的SQL语句,从而简化调试过程。尽管获取当前ROWCOUNT值的功能有所欠缺,但这并不影响其作为处理TOP N查询的有效工具的地位...
下面将详细介绍如何使用 SQL Server 实现递归查找子节点和父节点。 创建表 首先,我们需要创建一个表来存储树形结构的数据。在这个示例中,我们创建了一个名为 `t_part` 的表,包含三个字段:`zjid`(自己的编号)...
### SQL存储过程的调用详解 ...在SQL Server中,既可以使用SQL语句调用存储过程并获取返回值,也可以通过.NET编程语言如C#进行调用。无论哪种方法,都能有效地利用存储过程的优势,提高应用性能和安全性。
- 使用`@@error`和`@@rowcount`来检查SQL语句是否成功执行。 - 通过`raiserror`抛出异常并跳转到错误处理部分。 - 事务管理确保数据的一致性和完整性。 #### 四、总结 此存储过程模板提供了创建或修改SQL Server...
SQL Server 中直接使用 `SELECT TOP` 配合 `ORDER BY` 即可。 ```sql SELECT TOP 20 * FROM TestTable WHERE ID > (SELECT MAX(ID) FROM (SELECT TOP 20 ID FROM TestTable ORDER BY ID) AS T) ORDER BY ID ``` **...
例如,`@@ERROR`返回最近T-SQL语句的错误代码,`@@ROWCOUNT`显示受影响的行数,而`@@VERSION`则展示SQL Server的当前版本和相关信息。 - 局部变量则由用户在批处理或脚本中声明和使用,常用于存储临时数据或作为...
- 使用`WHILE @@ROWCOUNT > 0`循环,不断递归查找下一层的物料信息。 - 在每次循环中,都会将找到的物料信息添加到`@treeinfo`表中,并更新层级变量`@level`。 - 循环条件基于`@@ROWCOUNT`,即只有在每次插入新...
删除重复数据可以使用多种方法,包括使用 SELECT DISTINCT 语句、使用自动生成的标识符、使用游标、使用子查询等。 完全重复的记录 完全重复的记录是指所有字段均重复的记录。这种情况下,删除重复数据可以使用 ...
### SQL Server 常用存储过程详解 #### 一、分页存储过程 GetRecordSet 在 SQL Server 中,实现分页功能是...以上是 SQL Server 中一些常用的存储过程及其使用方法,它们可以帮助开发者更高效地管理和操作数据库。