SQL Server中的@@ROWCOUNT

SQL Server中@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型。 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG。

@@ROWCOUNT和@@ERROR变量的值,在执行完一条语句后总是会发生变化,所以我们将他们作为判断的依据的时候应该首先保存在局部变量中。他们反映的都是紧接着的上一条语句对他们的影响!

我们通常可以通过update、insert语句并使用@@ROWCOUNT来检测是否更改了任何一些行。

例如:

UPDATE  dbo.Employee
SET     EmpNo = EmpNo
WHERE  1=2
IF @@ROWCOUNT = 0
    PRINT ‘没有数据被修改‘;
GO

执行结果是:



(0 行受影响)
没有数据被修改

UPDATE  dbo.Employee
SET     EmpNo = EmpNo
WHERE  1=1 --修改为全部执行
IF @@ROWCOUNT = 0
    PRINT ‘没有数据被修改‘;
GO

执行结果是:



(1135 行受影响)

时间: 2024-10-27 08:11:44

SQL Server中的@@ROWCOUNT的相关文章

SQL Server中@@ROWCOUNT的用法

SQL Server中@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型. 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG. @@ROWCOUNT和@@ERROR变量的值,在执行完一条语句后总是会发生变化,所以我们将他们作为判断的依据的时候应该首先保存在局部变量中.他们反映的都是紧接着的上一条语句对他们的影响! 我们通常可以通过update.insert语句并使用@@ROWCOUNT来检测是否更改了任何一些行. 下面介绍一个使用@@ROWCOUNT的实例: S

SQL Server中Upsert的三种方式

本文介绍了SQL Server中Upsert的三种常见写法以及他们的性能比较. SQL Server并不支持原生的Upsert语句,通常使用组合语句实现upsert功能. 假设有表table_A,各字段如下所示: int型Id为主键. 方法1:先查询,根据查询结果判断使用insert或者update IF EXISTS (SELECT 1 FROM table_A WHERE Id = @Id) BEGIN UPDATE dbo.table_A SET Value = @Value WHERE

SQL Server中临时表与表变量的区别

2009年02月20日 星期五  19:31 我 们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是使用临时表及表变量.在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们 实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在.临时表在创建的时候都会产生SQL Ser

SQL Server中如何实现遍历表的记录

SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录. 但游标在实际的开发中都不推荐使用. 我们知道还可以借助临时表或表变量等来实现SQL Server遍历表 下例为用表变量来实现简单的循环: (直接复制到查询分析器中运行即可)1.           declare @temp table   2.           (   3.              [id] int IDENTITY(1,1),   4. 

SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)

原文:SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016) 本文出处:http://www.cnblogs.com/wy123/p/6770258.html 统计信息写过几篇了相关的文章了,感觉还是不过瘾,关于统计信息的问题,最近又踩坑了,该问题虽然不算很常见,但也比较有意思.相对SQL Server 2012,发现在新的SQL Server版本(2014,2016)中都有一些明显的变化,下文将对此进行粗浅的

(4.38)sql server中的事务控制及try cache错误处理

一.事务控制 BEGIN TRY BEGIN TRAN; DECLARE @aaa NVARCHAR(MAX); SET @aaa = 9 / 0; COMMIT TRAN; END TRY BEGIN CATCH --[错误]-- DECLARE @ErrorMessage NVARCHAR(MAX) , @ErrorSeverity INT , @ErrorState INT , @exception NVARCHAR(255); SELECT @ErrorMessage = ERROR_M

Oracle 和SQL server中数据备份与恢复

Oracle 侧 创建一个表,将现有表数据导入其中. create Table  TB_NYU_TENDERTBL_BAK   as  select *  from  TB_NYU_TENDERTBL  where  1=1 删除原来表内容. DELETE  FROM TB_NYU_TENDERTBL 恢复表的内容 insert  into TB_NYU_TENDERTBL  select  * from  TB_NYU_TENDERTBL_BAK SQL server侧 select  * i

从算法入手讲解如何在SQL Server中实现最优最简

算法是计算机科学中一个重要的研究方向,是解决复杂问题的关键.在计算机世界中,算法无处不在.数据库是存储数据和执行大批量计算的场所,在数据库中使用一些简单的SQL命令,进行存储.查询.统计.以解决现实世界中的问题已经是屡见不鲜.随着数据量的大幅度增加和业务规则的日益复杂,越来越需要一种专门的方法来满足效率和准确性方面的要求.如何把解决问题的复杂算法转换为数据库能够执行的命令,也是数据库应用技术研究的一个方面.本文以MSSQL中的命令来阐述例子. 数据库中可以存储实体的数据集合,在进行运算时,数据库

SQL Server中授予用户查看对象定义的权限

  在SQL Server中,有时候需要给一些登录名(用户)授予查看所有或部分对象(存储过程.函数.视图.表)的定义权限存.如果是部分存储过程.函数.视图授予查看定义的权限,那么就像下面脚本所示,比较繁琐: GRANT VIEW DEFINITION ON  YOUR_PROCEDURE TO   USERNAME; GRANT VIEW DEFINITION ON  YOUR_FUNCTION TO USERNAME; GRANT VIEW DEFINITION ON  YOUR_VIEW T