Vraag : De geëindigde verklaring. Maximumterugkeer 100 is uitgeput vóór verklaringsvoltooiing

Hallo heb ik de onderstaande sql code en ik houd krijgend de fout de „Geëindigdei verklaring. Maximumterugkeer 100 is uitgeput vóór ideeën/>
Any van de verklaringsvoltooiing de "
" codeBody "
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:
WITH cte ZOALS (UITGEZOCHTE dbo.vw_TFAM_ALL.TicketID, dbo.vw_TFAM_ALL.CC, dbo.vw_TFAM_ALL.FormType, dbo.vw_TFAM_ALL.SubmittedOn, 
                                                    dbo.vw_TFAM_ALL.AcknBy, dbo.vw_TFAM_ALL.AcknOn, dbo.vw_TFAM_ALL.SubmittedBy, dbo.vw_TFAM_ALL.Status, 
                                                    dbo.vw_TFAM_ALL.isSubmitted, dbo.vw_TFAM_ALL.IndvACF2ID, dbo.vw_TFAM_ALL.PendOrPost, dbo.vw_TFAM_ALL.NoOfEmpl, 
                                                    dbo.vw_TFAM_ALL.Business, dbo.vw_TFAM_ALL.ReqType, COMPUTER-AIDED SOFTWARE ENGINEERING WANNEER [OneForm]. [dbo] .vw_TFAM_ALL.Status = „Vervuld“ OF
                                                    [OneForm]. [dbo] .vw_TFAM_ALL.Status = „Geannuleerd“ TOEN [OneForm]. [dbo]. [vw_TFAM_SLA_Times] .SLA_in_Min ANDERS ONGELDIG 
                                                    EIND ALS SLA_Minutes, COMPUTER-AIDED SOFTWARE ENGINEERING WANNEER [OneForm]. [dbo] .vw_TFAM_ALL.Status = „Vervuld“ OF
                                                    [OneForm]. [dbo] .vw_TFAM_ALL.Status = „Geannuleerd“ TOEN [OneForm]. [dbo]. [vw_TFAM_SLA_Times] .SLA_in_Min/1440 ANDERS ONGELDIG 
                                                    EIND ALS SLA_Days
                             VAN dbo.vw_TFAM_SLA_Times BINNEN TREED TOE
                                                    dbo.vw_TFAM_ALL OP dbo.vw_TFAM_ALL.TicketID = dbo.vw_TFAM_SLA_Times.ticketid)



    SELECTEER TicketID, CC, FormType, SubmittedOn, AcknBy, AcknOn, SubmittedBy, Status, isSubmitted, IndvACF2ID, PendOrPost, NoOfEmpl, Zaken, ReqType, 
                            SLA_Minutes, SLA_Days, COMPUTER-AIDED SOFTWARE ENGINEERING WANNEER FormType = „BuildingPass“ EN SLA_Days <= 3 TOEN 1 WANNEER FormType = „CancelAccess“ EN 
                            SLA_Days <= 4 TOEN 1 WANNEER FormType = „NameChange“ EN SLA_Days <= 10 TOEN 1 WANNEER FormType = „ChangeAccess“ EN 
                            SLA_Days <= 10 TOEN 1 WANNEER FormType = „ETCChange“ EN SLA_Days <= 3 TOEN 1 WANNEER FormType = „EmpStatusChange“ EN 
                            SLA_Days <= 3 TOEN 1 WANNEER FormType = „HomeAccess“ EN ReqType = „Nieuwe Toegang“ EN 
                            SLA_Days <= 15 TOEN 1 WANNEER FormType = „HomeAccess“ EN ReqType = „Toepassing“ toevoegt EN 
                            SLA_Days <= 15 TOEN 1 WANNEER FormType = „HomeAccess“ EN ReqType = „de Toegang van het Huis“ annuleert EN 
                            SLA_Days <= 10 TOEN 1 WANNEER FormType = „HomeAccess“ EN ReqType = „Symbolische Verloren/Beschadigd/Verlopen Vervanging -“ EN 
                            SLA_Days <= 15 TOEN 1 WANNEER FormType = „NewHire“ EN SLA_Days <= 10 TOEN 1 WANNEER FormType = „PassReset“ EN 
                            SLA_Days <= 3 TOEN 1 WANNEER FormType = „ReactivationAccess“ EN SLA_Days <= 3 TOEN 1 WANNEER FormType = „SharedDrive“ EN 
                            SLA_Days <= 7 TOEN 1 WANNEER FormType = „SuspendAccess“ EN SLA_Days <= 3 TOEN 1 WANNEER FormType = „TMChange“ EN 
                            SLA_Days <= 5 TOEN 1 WANNEER FormType = „TransferIn“ EN SLA_Days <= 10 TOEN 1 WANNEER FormType = „TransferOut“ EN 
                            SLA_Days <= 4 TOEN 1 WANNEER FormType = „PositionChange“ EN SLA_Days <= 10 TOEN 1 WANNEER FormType = „AccessExc“ EN 
                            SLA_Days <= 10 TOEN 1 WANNEER FormType = „GenericEmail“ EN ReqType = „tot Nieuwe Generische identiteitskaart van de Post“ leidt EN 
                            SLA_Days <= 10 TOEN 1 WANNEER FormType = „GenericEmail“ EN ReqType = „Generische identiteitskaart van de Post“ schrapt EN 
                            SLA_Days <= 5 TOEN 1 WANNEER FormType = „GenericEmail“ EN ReqType = „tot de Nieuwe Lijst van de Distributie“ leidt EN 
                            SLA_Days <= 7 TOEN 1 WANNEER FormType = „GenericEmail“ EN ReqType = „de Lijst van de Distributie“ schrapt EN 
                            SLA_Days <= 5 TOEN 1 WANNEER FormType = „GenericEmail“ EN ReqType = „de Lijst van de Distributie“ EN SLA_Days <= 5 TOEN 1 ANDERS ONGELDIG verandert 
                            EIND ALS SLA_Met, 
                            COMPUTER-AIDED SOFTWARE ENGINEERING WANNEER FormType = „TOEN de „Pas van de Bouw AccessExc“ DAN tot „- het Proces van de Uitzondering“ WANNEER FormType = „BuildingPass““ WANNEER FormType toegang heeft
                             = „CancelAccess annuleert“ DAN „Toegang“ WANNEER FormType = „ChangeAccess“ DAN „Toegang“ WANNEER FormType = TOEN „De Verandering van het Arbeidsstatus „EmpStatusChange““ verandert
                             WANNEER FormType = „ETCChange“ DAN „in OB van enz. Admin“ WANNEER FormType = „GenericEmail“ TOEN „Generische E-mail“ WANNEER FormType = „HomeAccess“ verandert
                             DAN de „Toegang van het Huis“ WANNEER FormType = „NameChange“ DAN „Verandering“ WANNEER FormType = „NewHire“ TOEN „Nieuwe Huur“ WANNEER FormType = „PassReset“ noemt
                             DAN „Teruggesteld Wachtwoord“ WANNEER FormType = „van de Rol“ WANNEER FormType = „ReactivationAccess“ TOEN de „Toegang van de Reactivering PositionChange“ DAN „/de Verandering“ plaatst
                             TOEN FormType = „SharedDrive“ TOEN „de Toegang van de Aandrijving“ deelde WANNEER FormType = „SuspendAccess“ DAN „Toegang“ WANNEER FormType = „TMChange“ opschort
                             DAN „de Verandering van de Manager van het Team slechts“ WANNEER FormType = „TransferIn“ DAN „in“ overbrengt WANNEER FormType = „TransferOut uit““ DAN „EIND ZOALS overbrengt
                             FormName
     VAN cte ALS cte_1

Antwoord : De geëindigde verklaring. Maximumterugkeer 100 is uitgeput vóór verklaringsvoltooiing

Probeer hieronder de code -!! VOORZICHTIGHEID!! - te testen gelieve grondig het.

Mijn gissing is dat de terugkeer CTE cumulatief voor al recursieve/ingebedde CTEs wordt geteld.  Zo als u 3 niveaus van CTE hebt en het hoogste niveau 2de niveau aan lijn 50 keer veroorzaakt, veroorzaakt het 2de niveau 3de niveau aan lijn 80 keer (80 dagen), wordt u reeds 4000 terugkeer zonder zelfs het van een lus voorzien op het hoogste niveau.

Denk na gebruikend terwijl de lijnen of andere methodes om het aantal van CTE te verminderen roepen.
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:
CRE�ëR FUNCTIE [dbo]. [CalcMinutesSLA_TFAM] (
 @startTime DATETIME,
 @endTime DATETIME
 ) 
winst int.
zoals
begin
	verklaar @minutes int.;
	verklaar datetime @startPlus1
	verklaar datetime @endLess1
	-- werk de waaier binnen voor de volledige dagen - tussen uit
	selecteer @startPlus1 = datediff (D, 0, @startTime+1),
			@endLess1 = datediff (D, 0, @endTime-1)
	-- controleer hoeveel niet-weekenddagen in dit gamma bestaan
	selecteer @minutes = 480 * (bekeerling (int., @endLess1-@startPlus1) /7*5 + telling (*))
	van hoofd. .spt_values
	waar type='P en aantal tussen 0 en datediff (D,
		@startPlus1+convert (int., @endLess1-@startPlus1) /7*7, @endLess1)
		en datename (dw, @startPlus1+number)! = „S“
	-- controleer hoeveel niet-weekendvakantie in dit gamma bestaat
	selecteer @minutes = @minutes - telling (*)
	van web_holidays
	waar HolidayDate tussen @startPlus1 en @endless1
	  en weggegaan (datename (dw, HolidayDate), 1)! = „S“
	-- pas eerst tijden/laatste dagen aan
	als datepart (hh, @startTime) < 9="" set="">= 17 reeks @endTime = datediff (dd, 0, @endTime) +17.0/24
	als @startTime >= @endTime terugkeert voeg me samen (@minutes, 0);
	-- als de begindatum een vakantie en niet geen weekend is, voeg notulen toe
	selecteer @minutes = @minutes +
		datediff (mi, @startTime, datediff (dd, 0, @startTime) +17.0/24)
	waar niet bestaat (
		selecteer * uit web_holidays
		waar HolidayDate = datediff (dd, 0, @startTime))
		en weggegaan (datename (dw, @startTime), 1)! = „S“
	-- als de einddatum een vakantie en niet geen weekend is, voeg notulen toe
	selecteer @minutes = @minutes +
		datediff (mi, datediff (dd, 0, @endTime) +9.0/24, @endTime)
	waar niet bestaat (
		selecteer * uit web_holidays
		waar HolidayDate = datediff (dd, 0, @endTime))
		en weggegaan (datename (dw, @endTime), 1)! = „S“
	-- als start=end, wij de dag tweemaal hebben geteld, neem weg 480
	selecteer @minutes = @minutes - 480
	waar niet bestaat (
		selecteer * uit web_holidays
		waar HolidayDate = datediff (dd, 0, @endTime))
		en weggegaan (datename (dw, @endTime), 1)! = „S“
		en datediff (D, @startTime, @endTime) = 0 -- van dezelfde dag
   de terugkeer voegt zich samen (@minutes, 0);
eind
GA
Andere oplossingen  
 
programming4us programming4us