if @@rowCount>0
在这段之前的语句执行了
这之后的语句没有执行
但是察看数据库的时候发现这之后的语句应该执行
问一下@@rowCount应不应该这么用?
@@rowCount在SqlServer中应该是全局静态变量吧?

解决方案 »

  1.   

    @@ROWCOUNT
    返回受上一语句影响的行数。
      

  2.   

    @@rowCount在SqlServer中是全局静态变量.只要有操作,就返回上一操作影响的行数。
      

  3.   

    if @@rowCount>0 
    在这段之前的语句执行了 
    这之后的语句没有执行 
    但是察看数据库的时候发现这之后的语句应该执行 
    -------------------------------------这段话就看不懂了.
      

  4.   

    但是现在数据有问题,而且不是经常出现,我怀疑是因为@@RowCount的问题,是不是全局静态变量的问题?
      

  5.   

    a语句---执行
    if @@rowcount>0
    b语句--未执行(应该执行)
    这样好懂不?
      

  6.   

    a语句---执行   --这儿有影响行吗?
    if (@@rowcount>0)   
    b语句--未执行(应该执行) 
      

  7.   

    我怀疑是因为@@rowcount为系统的全局变量,不知对不对
      

  8.   

    @@rowcount是相应会话的全局 变量 呀
      

  9.   


    --test
    --查询一:
    select * from sysobjects  ->0
    --查询二:select @@rowcount -- 0 or 1if (1=1)
       select @@rowcount --0select 1 union
    select 3select @@rowcount --2
      

  10.   


    @@rowCount在SqlServer中是全局静态变量. 
      

  11.   

    @@ROWCOUNT 返回受上一语句执行操作所影响的行数。 
      

  12.   

    全局@@ROWCOUNT 
    返回受上一语句影响的行数。 
    select * from t
    select @@ROWCOUNT 
      

  13.   

    只能解释为
    Transact-SQL 语句可以通过下列方式设置 @@ROWCOUNT 的值:将 @@ROWCOUNT 设置为受影响或被读取的行的数目。可以将行发送到客户端,也可以不发送。
    保留前一个语句执行中的 @@ROWCOUNT。
    将 @@ROWCOUNT 重置为 0 但不将该值返回到客户端。
      

  14.   


    @@ROWCOUNT
    返回受上一语句影响的行数。语法
    @@ROWCOUNT返回类型
    integer注释
    任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。示例
    下面的示例执行 UPDATE 语句并用 @@ROWCOUNT 来检测是否有发生更改的行。UPDATE authors SET au_lname = 'Jones'
    WHERE au_id = '999-888-7777'
    IF @@ROWCOUNT = 0
       print 'Warning: No rows were updated'
      

  15.   

    @@ROWCOUNT 返回的都是上一条SQL 语句后的执行信息。 
      

  16.   

    select * from table1
    如果返回了数据那么
     @@rowCount里面以行为单位保存一个数字就是你用查询分析器执行一个语句然后看他返回多少行那么他的@@rowCount就等于多少
      

  17.   

    语法
     
    @@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。返回类型
    int示例
    以下示例执行 UPDATE 语句并使用 @@ROWCOUNT 来检测是否更改了任何一些行。 复制代码 
    USE AdventureWorks;
    GO
    UPDATE HumanResources.Employee 
    SET Title = N'Executive'
    WHERE NationalIDNumber = 123456789
    IF @@ROWCOUNT = 0
    PRINT 'Warning: No rows were updated';
    GO
     
      

  18.   

    UPDATE HumanResources.Employee 
    SET Title = N'Executive'
    WHERE NationalIDNumber = 123456789
    IF @@ROWCOUNT = 0
    PRINT 'Warning: No rows were updated';
    以这个为例
    UPDATE HumanResources.Employee 
    SET Title = N'Executive'
    WHERE NationalIDNumber = 123456789
    确认执行了,并且更改了数据库中的数据
    当我执行IF @@ROWCOUNT = 0的时候,是否可以肯定@@RowCount的值
    是执行了
    UPDATE HumanResources.Employee 
    SET Title = N'Executive'
    WHERE NationalIDNumber = 123456789
    的结果?
    而不是 select * from HumanResources.Employee 之类的其他Sql语句的结果
    单机测试测不出来的,@@ROWCOUNT全局静态变量
    针对
    UPDATE HumanResources.Employee 
    SET Title = N'Executive'
    WHERE NationalIDNumber = 123456789
    IF @@ROWCOUNT = 0
    PRINT 'Warning: No rows were updated';
    以这个为例
    UPDATE HumanResources.Employee 
    SET Title = N'Executive'
    WHERE NationalIDNumber = 123456789
    我的解决方案是
    if(exists(select * from HumanResources.Employee where NationalIDNumber = 123456789))
    begin
    UPDATE HumanResources.Employee 
    SET Title = N'Executive'
    WHERE NationalIDNumber = 123456789
    end
    else
    begin
    PRINT 'Warning: No rows were updated';
    end