2011-07-09 5 views
1

Avec une procédure stockée MS SQL, j'obtiens l'erreur suivante "Nom de colonne invalide NavigationID".Aide SP (nom de colonne non valide)

Quelqu'un peut-il me dire ce que je fais de façon incorrecte?

DECLARE @NavigationID INT 
SET @NavigationID = 5 

CREATE TABLE #tmp (NavigationID int , ParentID int); 
INSERT INTO #tmp SELECT NavigationID, ParentID FROM Nav; 

    WITH Parent AS 
    (
     SELECT NavigationID, ParentID FROM #tmp WHERE NavigationID = @NavigationID 
     UNION ALL 
     SELECT t.NavigationID, t.ParentID FROM Parent 
     INNER JOIN #tmp t ON t.NavigationID = Parent.ParentID 
    ) 

    SELECT NavigationID FROM ParentID 
    WHERE NavigationID <> @NavigationID; 

Répondre

1

Avec le code que vous avez affiché vous obtenez.

Msg 208, Level 16, State 1, Line 10 
Invalid object name 'ParentID'. 

changement FROM ParentID-. Vous avez également besoin d'une colonne NavigationID dans le tableau Nav.

Essayez ceci:

declare @Nav table(NavigationID int, ParentID int) 

insert into @Nav 
select 1, null union all 
select 2, 1 union all 
select 3, 1 union all 
select 4, 3 union all 
select 5, 3 union all 
select 6, null union all 
select 7, 6 

declare @NavigationID int; 
set @NavigationID = 5; 


with Parent as 
(
    select NavigationID, 
     ParentID 
    from @Nav 
    where NavigationID = @NavigationID 
    union all 
    select t.NavigationID, t.ParentID 
    from Parent 
    inner join @Nav t 
     on t.NavigationID = Parent.ParentID 
) 
select NavigationID 
from Parent 
where NavigationID <> @NavigationID; 

Résultat:

NavigationID 
------------ 
3 
1 

Remplacer @Nav avec ce tableau que vous utilisez. @Nav est seulement ici pour que ce code puisse être copié et testé.

+0

Salut Merci. Une fois modifié, il indique toujours "Nom de colonne invalide NavigationID". – techco1

+0

Msg 207, niveau 16, état 1, ligne 9 Nom de colonne non valide "NavigationID". Msg 207, niveau 16, état 1, ligne 9 Nom de colonne non valide "ID de navigation". Msg 207, niveau 16, état 1, ligne 12 Nom de colonne non valide "NavigationID". Msg 207, niveau 16, état 1, ligne 11 Nom de colonne non valide "ID de navigation". – techco1

+0

À quoi ressemble cette table 'Nav'? –

Questions connexes