你要把Print @@ROWCOUNT 這一句放在COMMIT TRAN 的前面才會有值。

解决方案 »

  1.   

    啊,是这样的吗?
    一样没有啊,而且我是希望返回 @retval = @@ROWCOUNT 
    按照你那样做结果一样是 0 哦,怎么回事?
    是不是不能使用 Tran ?
      

  2.   

    啊,是这样的吗?
    一样没有啊,而且我是希望返回 @retval = @@ROWCOUNT 
    按照你那样做结果一样是 0 哦,怎么回事?
    是不是不能使用 Tran ?
      

  3.   

    --Try again.CREATE PROCEDURE TransferPayrollProc
    (
    @ActionUser nvarchar(20),
    @retval int OUTPUT
    )
    AS
    BEGINBEGIN TRANINSERT PayrollHistory(EmpNo,DatePay,PayAmount,PayCode,Memo,ActionUser)
    SELECT EmpNo,DatePay,PayAmount,PayCode,Reason,@ActionUser FROM Payroll     IF (@@error!=0)
        BEGIN
            RAISERROR  20001 ' TransferPayrollProc : Error '
            ROLLBACK TRAN
            SET @retval=0
        END
        ELSE
        BEGIN
            PRINT @@ROWCOUNT
            SET @retval=@@ROWCOUNT
            COMMIT TRAN
        ENDEND
    GO
     
     
      

  4.   

    在 PRINT @@ROWCOUNT 之前执行
    SELECT EmpNo,DatePay,PayAmount,PayCode,Reason,@ActionUser FROM Payroll         
      

  5.   

    是不是因为@@ROWCOUNT和SELECT已经不在一个事物中,所以@@ROWCOUNT不能反映SELECT的COUNT?