meeting BT ET OrigBlkSt OrigBlkEnd ------------------------------------------------------------------ 11364 04/09/2002 09:00 04/09/2002 12:00 NULL NULL 11366 04/09/2002 09:00 04/09/2002 12:00 NULL NULL * Abbrivated field namesWhen I run the procedure, I get the following messages in the QA
Warning: Null value is eliminated by an aggregate or other SET operation. Warning: Null value is eliminated by an aggregate or other SET operation. (1 row(s) affected) (1 row(s) affected)And the data now has the following:
meeting BT ET OrigBlkSt OrigBlkEnd ------------------------------------------------------------------ 11364 04/09/2002 09:00 NULL NULL NULL 11366 04/09/2002 09:00 04/09/2002 09:30 NULL NULL * Abbrivated field namesMeeting # 11364 has no child records, it should have the iscancelled flag changed to 1 and the Original fields with data.
DECLARE releaseTable CURSOR FOR select m.meetingnumber,m.begintime,m.endtime,m.begintime-m.releasedays as ReleaseDate,m.OriginalBlockStart,m.OriginalBlockEnd, (select max(s.Endtime) from meetings s where s.blockmember=1 and s.iscancelled=0 and s.blockid=m.blockid) as lastCaseEnds 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 @beginTime datetime declare @endTime datetime declare @releaseDate datetime declare @originalBlockStart datetime declare @originalBlockEnd datetime declare @lastCaseEnds datetime FETCH NEXT FROM releaseTable into @meetingnumber,@beginTime,@endtime,@releasedate,@OriginalBlockStart,@OriginalBlockEnd,@lastCaseEnds WHILE (@@FETCH_Status=0) BEGIN IF (@LastCaseEnds = NULL) BEGIN -- If lastCaseEnds=NULL there are no children records associated with this block UPDATE dbo.meetings set iscancelled=1, OriginalBlockStart=@BeginTime, OriginalBlockEnd=@EndTime 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 UPDATE dbo.meetings set endtime = @LastCaseEnds, OriginalBlockStart=case WHEN @OriginalBlockStart=NULL THEN @begintime ELSE @OriginalBlockStart END, OriginalBlockEnd =case WHEN @OriginalBlockEnd=NULL then @BeginTime Else @OriginalBlockEnd END WHERE dbo.meetings.meetingnumber = @meetingnumber END FETCH NEXT FROM releaseTable into @meetingnumber,@beginTime,@endtime,@releasedate,@OriginalBlockStart,@OriginalBlockEnd,@lastCaseEnds END Close releaseTable DEALLOCATE releaseTable