sql语句如下:
declare @num int
begin try
begin tran
insert into AFZKDZJLB1(ACZKBH)values('@ACZKBH');
set @num = @@IDENTITY;
insert into AFZKDZJLB2(ACDYZDBH)values(@num);
                RAISERROR('Error raised in TRY block.',16,1);---加了异常来测试回滚
commit tran
end try
begin catch
rollback tran
end catch在程序里我用的是 ExecuteNonQuery() 方法执行的,发现无法判断Sql语句是否回滚,因为返回的受影响的行数,不管回滚还是成功都是大于0的.....该怎么解决啊,求解,谢谢!!!

解决方案 »

  1.   

    进入catch 表明出异常了
    这时候要回滚
      

  2.   

    你在catch里面写个标志变量 就知道是否回滚了
      

  3.   

    是不是这样写:
    begin catch
    set @num = -1
    rollback tran
    end catch
    select @num
    然后在程序里面用 ExecuteScalar()方法?
      

  4.   

    BEGIN TRAN     
    insert into AFZKDZJLB1(ACZKBH)values('@ACZKBH');
    set @num = @@IDENTITY;
    insert into AFZKDZJLB2(ACDYZDBH)values(@num);
    RAISERROR('Error raised in TRY block.',16,1);  
    if(@@error<>0)         
      begin
        select 0 
       ROLLBACK  
      end   
    ELSE 
      begin
        COMMIT  
        select 1
      end  
    用 ExecuteScalar() 方法执行 看返回值