• 获取Sqlserver上一句语句执行后受影响的行数@@rowCount


    from:http://blog.163.com/rihui_7/blog/static/212285143201381343240404/

     

    返回受上一语句影响的行数。 如果行数大于 20 亿,请使用 ROWCOUNT_BIG

    主题链接图标 Transact-SQL 语法约定

    @@ROWCOUNT 

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

    USE AdventureWorks2012; GO UPDATE HumanResources.Employee  SET JobTitle = N'Executive' WHERE NationalIDNumber = 123456789 IF @@ROWCOUNT = 0 PRINT 'Warning: No rows were updated'; GO

    返回上一语句受影响的行数!和@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!
  • 相关阅读:
    【转载】SQL Server跨服务器操作数据库——通过链接服务器(LinkedServer)实现SQL Server远程链接MySql等数据库
    如何正确恢复SQLSERVER的master系统库
    SQL Server Master Database
    Oracle Database “record locked by another user” solution (recommended)
    matlab2021a的快捷键修改
    快速学习新技能
    matlab中数据结构之tables
    记录一个小错误
    matlab数据结构之categorical
    看下不同的代码书写方式
  • 原文地址:https://www.cnblogs.com/94cool/p/8963241.html
Copyright © 2020-2023  润新知