DECLARE cur_RemoveHolidays cursor for
SELECT ST_SUID,DT_ACCEPT_TIME,DT_FINISH_TIME FROM APPLY_INFO;
--打开游标
open cur_RemoveHolidays
DECLARE @ST_SUID VARCHAR(50)
declare @StartTime DATETIME
DECLARE @EndTime DATETIME
--循环游标
fetch next from cur_RemoveHolidays into @ST_SUID,@StartTime, @EndTime
while @@FETCH_STATUS=0
begin
update APPLY_INFO
set FinishTime = FinishTime - WeekAndHoliday,
IsReckonHoliday = 1
from (SELECT @ST_SUID AS ST_SUID,COUNT(WeekEndFlag) AS WeekAndHoliday
FROM dbo.Dim_Date
WHERE mDate
BETWEEN @StartTime AND @EndTime
AND (
WeekEndFlag = 1
OR HolidayFlag = 1
) ) A inner join APPLY_INFO B
on B.ST_SUID = @ST_SUID
WHERE IsReckonHoliday IS NULL OR IsReckonHoliday = 0
fetch next from cur_RemoveHolidays into @ST_SUID,@StartTime ,@EndTime
end--关闭释放游标
close cur_RemoveHolidays
DEALLOCATE cur_RemoveHolidays