Вопрос : Прекращенное заявление. Максимальная рекурсия 100 была вымотана перед завершением заявления

Hi я имею внизу Кодего sql и я держу получить ошибке «заявление после того как я прекращен. Максимальная рекурсия 100 была вымотана перед идеи

Any завершением заявления " почему?
class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
cte >WITH " class= " " codeSnippet947215 id=
           
class=

Ответ : Прекращенное заявление. Максимальная рекурсия 100 была вымотана перед завершением заявления

Попытайтесь Кодий ниже -!! ПРЕДОСТОРЕЖЕНИЕ!! - пожалуйста испытайте его тщательно.

Моя догадка что рекурсии CTE подсчитаны кумулятивно для всего рекурсивного/врезанного CTEs.  Так если вы имеете 3 уровня CTE и высший уровень причиняет 2-ой уровень закрепить петлеть 50 времен, то, 2-ой уровень причиняет 3-ий уровень закрепить петлеть 80 времен (80 дней), вы получает 4000 рекурсий уже без даже закреплять петлей на высшем уровне.

Рассматривайте использовать пока петли или другие методы для уменьшения числа CTE вызывают.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
СОЗДАЙТЕ ФУНКЦИЮ [dbo]. [CalcMinutesSLA_TFAM] (
 DATETIME @startTime,
 DATETIME @endTime
 ) 
возвращает int
как
начните
	объявите @minutes int;
	объявите datetime @startPlus1
	объявите datetime @endLess1
	-- разработайте ряд на целые дни in-between
	выберите @startPlus1 = datediff (d, 0, @startTime+1),
			@endLess1 = datediff (d, 0, @endTime-1)
	-- проверите сколько дни non-викэнда существуют в этом ряде
	выберите @minutes = 480 * (новообращенный (int, @endLess1-@startPlus1) /7*5 + отсчет (*))
	от оригинала. .spt_values
	где type='P и номер между 0 и datediff (d,
		@startPlus1+convert (int, @endLess1-@startPlus1) /7*7, @endLess1)
		и datename (dw, @startPlus1+number)! = «s»
	-- проверите сколько праздники non-викэнда существуют в этом ряде
	выберите @minutes = @minutes - отсчет (*)
	от web_holidays
	где HolidayDate между @startPlus1 и @endless1
	  и о (datename (dw, HolidayDate), 1)! = «s»
	-- отрегулируйте времена на сперва/последние дни
	если @endTime 17 datepart (hh, < 9="" set="">@startTime) = установленные = datediff (dd, 0, @endTime) +17.0/24
	если возвращение @endTime >= @startTime коалесцирует, то (@minutes, 0);
	-- если датой начала не будет праздником и не викэндом, то добавьте минуты
	выберите @minutes = @minutes +
		datediff (mi, @startTime, datediff (dd, 0, @startTime) +17.0/24)
	где не существует (
		выберите * от web_holidays
		где HolidayDate = datediff (dd, 0, @startTime))
		и о (datename (dw, @startTime), 1)! = «s»
	-- если датой конца не будет праздником и не викэндом, то добавьте минуты
	выберите @minutes = @minutes +
		datediff (mi, datediff (dd, 0, @endTime) +9.0/24, @endTime)
	где не существует (
		выберите * от web_holidays
		где HolidayDate = datediff (dd, 0, @endTime))
		и о (datename (dw, @endTime), 1)! = «s»
	-- если start=end, мы подсчитывало день дважды, то примите 480 
	выберите @minutes = @minutes - 480
	где не существует (
		выберите * от web_holidays
		где HolidayDate = datediff (dd, 0, @endTime))
		и о (datename (dw, @endTime), 1)! = «s»
		и datediff (d, @startTime, @endTime) = 0 -- такой же день
   возвратите коалесцируйте (@minutes, 0);
конец
ИДИТЕ
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us