CREATE PROCEDURE job_AutoReleaseBlocks AS DECLARE releaseTable CURSOR FOR select m.meetingnumber,m.endtime,m.begintime-m.releasedays as ReleaseDate, (select max(s.Endtime) from meetings s where s.blockmember=1 and s.iscancelled=0 and s.blockid=m.blockid) as lastCaseEnds, dateDiff(mi,m.OriginalBlockStart,m.OriginalBlockEnd) as OrigBlockMins, isnull((select sum(datediff(mi,k.begintime,k.endtime)) from meetings k where k.blockmember=1 and k.iscancelled=0 and k.blockid=m.blockid),0) as ScheduledMins from meetings m where isblock=1 and isnull(releaseDays,0)>0 and datepart(dd,begintime-releasedays)=datepart(dd,getdate()) and datepart(mm,begintime-releasedays)=datepart(mm,getdate()) and datepart(yy,begintime-releasedays)=datepart(yy,getdate()) and m.iscancelled=0 open releaseTable declare @meetingnumber int declare @endtime datetime declare @releaseDate datetime declare @lastCaseEnds datetime declare @origBlockMins int declare @ScheduledMins int declare @BlockUtilization int FETCH NEXT FROM releaseTable into @meetingnumber,@endtime,@releasedate,@lastCaseEnds,@origBlockMins,@ScheduledMins WHILE (@@FETCH_Status=0) BEGIN SET @BlockUtilization=((@scheduledMins/@OrigBlockMins)*100) IF (@LastCaseEnds = NULL) BEGIN -- If lastCaseEnds=NULL there are no children records associated with this block UPDATE dbo.meetings set iscancelled=1, blockUtilization=0, AutoReleaseDT=GetDate() where dbo.meetings.meetingnumber = @meetingnumber END ELSE BEGIN -- Adjust the end time of the meetings table to -- match the end time of the last scheduled case for that block IF @LastCaseEnds <= @EndTime BEGIN-- Adjust Block End time to Meet Last Case Time UPDATE dbo.meetings set endtime= @LastCaseEnds, blockUtilization=@BlockUtilization, AutoReleaseDT=GetDate() where dbo.meetings.meetingnumber = @meetingnumber END ELSE BEGIN UPDATE dbo.meetings set blockUtilization=@blockutilization, autoReleaseDT=getDate() where dbo.meetings.meetingnumber=@meetingnumber END END FETCH NEXT FROM releaseTable into @meetingnumber,@endtime,@releasedate,@lastCaseEnds,@origBlockMins,@ScheduledMins END Close releaseTable DEALLOCATE releaseTable