• DECLARE RM_CURSOR CURSOR FOR

    SELECT D.id,D.PeriodDesc,D.StartDate,D.EndDate

    FROM #DateRanges D

    ORDER BY D.id

    OPEN RM_CURSOR

    FETCH NEXT FROM RM_CURSOR INTO @id,@PeriodDesc,@StartDate,@EndDate

    WHILE @@FETCH_STATUS = 0

    BEGIN

    Your looping logic is based on Cursor fetch status. Declare a CounterVariable & get the number of the rows for your cursor query. Compare this CounterVariable in your loop & your are good to remove cursor.