2013-08-18 109 views
0

我有一个问题,与我的一个交易。我把它打印多少行已经触及@RowCount使用:@rowcount问题与交易

create proc Proc_Whole_Months_Work 
@ProjectNum int, 
@EmpId int, 
@StartDate datetime, 
@EndDate datetime 
as 
BEGIN TRANSACTION 
    declare @CurrentDate datetime 
    DECLARE @rowcount int 
    set @CurrentDate = @StartDate 

    while (@CurrentDate <= @EndDate) 
    begin 
     if (datepart(WEEKDAY, @CurrentDate) <=5)--if it is a weekday 
     begin 
      insert into WorkHours(ProjectNum,EmpId,WorkDate,BeginTime,EndTime)values (@ProjectNum,@EmpId,@CurrentDate,'09:00:00','17:00:00')  
     end 
     set @CurrentDate =DATEADD(dd, 1, @CurrentDate) 
    end 
SET @rowcount = @@ROWCOUNT 
--print @rowcount 
if(@rowcount = 0) 
    PRINT 'No rows Updated' 
else 
    print 'Number Of Rows Updated:' + ' ' + str(@rowcount) 
COMMIT TRANSACTION 

出于某种原因,我似乎不明白,程序打印“没有行更新”,即使有行更新! 任何想法我做错了什么? 非常感谢!

回答

0

@@rowcount返回受上一语句影响的行数,所以你必须在执行任何语句之前,将其保存,否则会失去

set @rowcount = 0 
while @CurrentDate <= @EndDate 
begin 
    if datepart(weekday, @CurrentDate) <=5 --if it is a weekday 
    begin 
     insert into WorkHours(ProjectNum,EmpId,WorkDate,BeginTime,EndTime)values (@ProjectNum,@EmpId,@CurrentDate,'09:00:00','17:00:00')  
     set @rowcount = @rowcount + @@rowcount 
    end 
    set @CurrentDate = dateadd(day, 1, @CurrentDate) 
end 

print @rowcount 

我也删除了一些多余的括号中的代码

+0

非常感谢您的回答!但它仍然没有行更新..:\(1行受影响) (1 row(s)affected) 没有行更新 – user2693861

+0

1.尝试在您的过程中打印@rowcount。 2.你确定有插入的行吗? –