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