2010-10-11 8 views

Répondre

2

La récursion nécessite une condition de fin. Par exemple

;with tempData as ( 
select 32 as col1, char(32) as col2 
union all 
select col1+1, char(col1+1) from tempData 
where col1 < 255 
) 
select * from tempData 
option (maxrecursion 223) 

En ce qui concerne la question du titre sur la façon dont cela fonctionne en interne voir this answer.

+0

- merci pour votre réponse son quitter informatif mais maintenant je veux savoir quelle est l'option (maxrecursion 0)? –

+0

@Jeevan - Par défaut, les CTE arrêteront la récursion après 100 niveaux. 'option (maxrecursion 0)' signifie qu'il continuera la récursion indéfiniment (pour toujours si vous avez une boucle infinie - ou au moins jusqu'à ce que SSMS manque de ressources!). –

+0

Je l'ai eu, merci Martin –

0

Vous avez une boucle infinie: où devrait-elle se terminer?

+0

Vous avez raison de sa boucle infinie mais je veux savoir comment sa boucle parce que je ne sais pas comment 'Avec' fonctionne. –