@@ROWCOUNT全局变量

@@ROWCOUNT全局变量

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

DECLARE @RowCountVar INT

Update AF_CarOil SET OilType = '五号汽油'--执行后@@ROWCOUNT为2

SET @RowCountVar = @@ROWCOUNT --执行后@@ROWCOUNT为1

IF @@ROWCOUNT = 1 --执行后@@ROWCOUNT为0

BEGIN

PRINT '影响的行数为1'

PRINT @@ROWCOUNT

END

IF @RowCountVar <> 0

BEGIN

PRINT '受影响的行数为:' + STR(@RowCountVar)

END

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

(2 行受影响)

影响的行数为 1

0

受影响的行数为: 2

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