2011-07-09 11 views
1

MS SQLストアドプロシージャで、「無効な列名NavigationID」というエラーが表示されます。SPヘルプ(無効な列名)

私が間違っていることを誰にでも教えてもらえますか?

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; 

答えて

1

投稿したコードを取得します。

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

FROM ParentIDからに変更してください。

Navには、NavigationIDという列も必要です。

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; 

結果:

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

は、使用しているものは何でも表と@Nav置き換え

はこれを試してみてください。 @Navはこのコードをコピーしてテストできるようにここにのみあります。

+0

こんにちは。変更されると、それでも "Invalid Column Name NavigationID"と表示されます。 – techco1

+0

メッセージ206、レベル16、状態1、行9 無効な列名 'NavigationID'。 msg 207、レベル16、状態1、行9 無効な列名 'NavigationID'。 msg 207、レベル16、状態1、行12 無効な列名 'NavigationID'。 msg 207、レベル16、状態1、行11 無効な列名 'NavigationID'。 – techco1

+0

テーブルの「ナビ」はどのように見えますか? –