@@ERROR和@@ROWCOUNT的用法

1.         @ERROR

当前一个语句遇到错误,则返回错误号,否则返回0。需要注意的是@ERROR在每一条语句执行后会被立刻重置,因此应该在要验证的语句执行后检查数值或者是将它保存到局部变量中以备将来使用。具体的分析请看下面的代码,一目了然。

update BL_Consumer set mobile=‘432142342342342342342342342342342342‘  where uid=1335

PRINT getdate() --执行后@@ERROR为0

PRINT @@ERROR
IF @@ERROR = 0

BEGIN

PRINT @@ERROR

END

-----------------------------------------------------------------

消息 8152,级别 16,状态 14,第 3 行
将截断字符串或二进制数据。
语句已终止。
12  9 2015  3:33PM
0
0

分析:上面的更新SQL语句导致字符串或二进制数据,抛出错误信息,所以在执行Update语句后的 @@Error数值是8152,但是在执行第一个Print @Error语句输出错误信息之后,注意,此时@@Error的数据立即变成了0!,这一点非常重要,因为@@Error在每一条语句执行后立刻被重置! 同样的道理,执行IF @@ERROR = 0语句后@@ERROR的数值仍然是0,因为这句话也没有发生错误!

2.         @@ROWCOUNT

返回上一语句受影响的行数!和@ERROR一样的特性,在每一条语句执行后都将被重置,如果将来使用需要将变量保存到局部变量中。任何不返回的语句都将这个变量置为0!比如经常使用的IF语句。废话少说,上代码!

update BL_Consumer set mobile=‘朱晓‘  where uid=1335

PRINT getdate() --执行后@@ROWCOUNT

PRINT @@ROWCOUNT
IF @@ROWCOUNT = 0

BEGIN

PRINT @@ROWCOUNT

END

-----------------------------------------------------------------

(2 行受影响)

影响的行数为 1

0

受影响的行数为:        2

分析:上面的代码中在执行Update语句之后,受影响的行数为2行,然后将受影响的行数保存到事先声明的局部变量中,赋值语句实际上影响的行数为1行, 在下面的IF语句中进行了跳转,这个地方是关键,这并不是Update语句受影响的行数是1,而是将@@ROWCOUNT将的赋给局部变量的过程中变成了 1。在执行后IF @@ROWCOUNT = 1的判断之后@@ROWCOUNT的数值重新被赋值为了0!

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

时间: 2024-10-30 16:46:06

@@ERROR和@@ROWCOUNT的用法的相关文章

SQL Server中Rowcount与@@Rowcount的用法

rowcount的用法: rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例, set rowcount 10select * from 表A 这样的查询只会返回表A中的前10条数据.它和 "select top 10 * from 表A" 的作用一样.注意一点,set rowcount 的设置会在整个会话中有效.比如下面的sql示例: set rowcount 10select * from 表Agoselect * from 表B 表A和表

转载——SQL Server中Rowcount与@@Rowcount的用法

转载自:http://www.lmwlove.com/ac/ID943 rowcount的用法: rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例, set rowcount 10select * from 表A 这样的查询只会返回表A中的前10条数据.它和 "select top 10 * from 表A" 的作用一样.注意一点,set rowcount 的设置会在整个会话中有效.比如下面的sql示例: set rowcount 10sel

SQL Server中@@ROWCOUNT的用法

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

SQL中rowcount与@@rowcount

1 rowcount的用法: 2 3 rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例, 4 set rowcount 10 5 select * from 表A 6 7 这样的查询只会返回表A中的前10条数据.它和 "select top 10 * from 表A" 的作用一样.注意一点,set rowcount 的设置会在整个会话中有效.比如下面的sql示例: 8 set rowcount 10 9 select * from 表A 10

SQL Server中Rowcount与@@Rowcount

rowcount的用法 rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例, set rowcount 10 select * from 表A 这样的查询只会返回表A中的前10条数据.它和 "select top 10 * from 表A" 的作用一样.注意一点,set rowcount 的设置会在整个会话中有效.比如下面的sql示例: set rowcount 10 select * from 表A go select * from 表B 表

总结一下SQL的全局变量

SQL Server 2008中的全局变量及其用法 T-SQL程序中的变量分为全局变量和局部变量两类,全局变量是由SQL Server系统定义和使用的变量.DBA和用户可以使用全局变量的值,但不能自己定义全局变量.下面详细总结一下SQL Server 2008中的33个全局变量,并且写一下示例. @@CONNECTIONS返回 SQL Server 自上次启动以来尝试的连接数,无论连接是成功还是失败.返回类型 integer备注:@@MAX_CONNECTIONS 是允许同时连接到服务器的最大连

T-SQL变量

T-SQL中变量分为全局变量和局部变量,分别使用@@和@前缀. 全局变量 常用的全局变量有@@VERSION .@@IDENTITY.@@ERROR.@@ROWCOUNT 用法 select @@VERSION --显示sql server的版本信息 select * from Employee insert into Employee(eName,eCode,edid) values('zjy',14,4) select @@IDENTITY --与一个insert语句连用,表示最新生成的标识

sql 中set和select区别

基于SQL中SET与SELECT赋值的区别详解 2012年09月06日 ? 综合 ? 共 912字 ? 字号 小 中 大 ? 评论关闭 最近的项目写的SQL比较多,经常会用到对变量赋值,而我使用SET和SELECT都会达到效果.那就有些迷惑,这两者有什么区别呢?什么时候哪该哪个呢?经过网上的查询,及个人练习,总结两者有以下几点主要区别:假定有设定变量: 复制代码 代码如下: DECLARE @VAR1 VARCHAR(1) DECLARE @VAR2 VARCHAR(2) 1.SELECT可以在

STL set,map

一.set和multisetset, multiset, map, multimap内部元素有序排列,新元素插入的位置取决于它的值,查找速度快.除了各容器都有的函数外,还支持以下成员函数:find: 查找等于某个值 的元素(x小于y和y小于x同时不成立即为相等)lower_bound : 查找某个下界upper_bound : 查找某个上界equal_range : 同时查找上界和下界count :计算等于某个值的元素个数(x小于y和y小于x同时不成立即为相等)insert: 用以插入一个元素或