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