Le résultat CTE récursif est infini

J'ai une table "ActionItem" en SQL avec les champs ActionItemId, ItemName et ParentActionItemId. Je crée une procédure stockée qui acceptera ActionItemId (Id) et affichera tous les loggings ActionItem qui sont les enfants de Id récursivement. Pour cela, j'ai utilisé CTE.

ALTER PROCEDURE [dbo].[SSP_ActionItem] @ActionItemId int AS BEGIN WITH ActionItemList AS ( -- Anchor SELECT ActionItem.ActionItemId, ActionItem.ItemName, ActionItem.ParentActionItemId FROM ActionItem WHERE ActionItemId=@ActionItemId UNION ALL -- Recursive query SELECT AIL.ActionItemId, AIL.ItemName, AIL.ParentActionItemId FROM ActionItem AS AI INNER JOIN ActionItemList AS AIL ON AI.ParentActionItemId=AIL.ActionItemId ) SELECT * FROM ActionItemList --option (maxrecursion 0) END 

Structure de la table:

  SELECT TOP 1000 [ActionItemId] ,[ParentActionItemId] ,[ItemName] FROM [ActionItem] 

Ce sp renvoie des loggings infinis. Je ne comprends pas où je vais mal. quelqu'un peut-il aider? Je suis nouveau dans ce concept CTE.

La procédure devrait être:

 ALTER PROCEDURE [dbo].[SSP_ActionItem] @ActionItemId int AS BEGIN WITH ActionItemList AS ( -- Anchor SELECT ActionItem.ActionItemId, ActionItem.ItemName, ActionItem.ParentActionItemId FROM ActionItem WHERE ActionItemId=@ActionItemId UNION ALL -- Recursive query SELECT AI.ActionItemId, AI.ItemName, AI.ParentActionItemId FROM ActionItem AS AI INNER JOIN ActionItemList AS AIL ON AI.ParentActionItemId=AIL.ActionItemId )