All pastes #254980 Raw Edit

Miscellany

public text v1 · immutable
#254980 ·published 2006-11-22 15:07 UTC
rendered paste body
ALTER PROCEDURE dbo.CreateCalendar
	
	(
	@BeginDate Datetime = NULL,
	@EndDate Datetime = NULL,
	@DateCounter INT = 0,
	@Ctr INT = 0,
	@Facility as Int = 0,
	@Room as Int = 0
	)
	
AS
	SET NOCOUNT ON

	DECLARE Location_Cursor CURSOR FOR (SELECT Facility_ID, ID FROM Rooms WHERE (Facility_ID = @Facility or @Facility=0) and (ID = @Room or @Room = 0))
	OPEN Location_Cursor
	FETCH NEXT FROM Location_Cursor
	WHILE @@FETCH_STATUS = 0
	   BEGIN
		  FETCH NEXT FROM Location_Cursor INTO @Facility,@Room
			
		    Set @BeginDate = dateadd(dd,-(day(@BeginDate)-1),@BeginDate)
			Set @EndDate = dateadd(dd,-(day(dateadd(mm,1,@EndDate))),dateadd(mm,1,@EndDate))

			Set @DateCounter = DateDiff("d",@BeginDate,@EndDate)
			If @DateCounter <> -1 
			Begin
				While @Ctr <= @DateCounter
				Begin		
					If NOT EXISTS (Select * From Calendar WHERE CalendarDay = DateAdd("d",@Ctr,@BeginDate) and Facility_ID = @Facility and Room_ID = @Room) 
						INSERT INTO Calendar VALUES (DateAdd("d",@Ctr,@BeginDate),@Facility,@Room)
					Set @Ctr = @Ctr + 1
				End
			End			  
	   END
	CLOSE Location_Cursor
	DEALLOCATE Location_Cursor