我有这样一段存储过程:
BEGIN TRANSACTION--做一些操作IF( @@ERROR <> 0)
    BEGIN
        ROLLBACK TRANSACTION
        return 0
    ENDCOMMIT TRANSACTION
    
return 1
请问,当另一个存储,比如pro_2过程调用这段过程时,如果遇到了错误,而导致roll back,并return 0了,在pro_2中,@@error是0还是什么值?谁能告诉我,谢谢!

解决方案 »

  1.   

    rollback后还是原来的值啊 都回滚了
      

  2.   

    IF( @@ERROR <> 0) 
        BEGIN 
            ROLLBACK TRANSACTION 
            return @@ERROR
        END 你这样试试
      

  3.   

    @@ERROR 返回的是最后一条语句执行的错误号(由系统产生的)。因此,@@ERROR 返回的是调用存储过程的错误号,如果成功调用则返回 0,即使在过程中发生错误导致 ROLLBACK TRAN。
      

  4.   


    所以你的意思是,rollback transaction算是一条语句? 因为这条语句执行ok,所以之前就算@@error不是0,在执行这条后,就会变成0. 可以这样理解么?
      

  5.   


    if @@error<>0 
    执行后,@@error就变回0了