Pytanie : SQL 2005 Gniazdować Zaopatrzony Procedura, dlaczego wartość cyngiel

I próbować zaopatrzony procedura który I móc od cyngiel który wracać przecinek oddzielać ID lista the rodzic i ono być dziatwa.  Procedura być procedura I mieć dla the zaopatrzony procedura:

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:
CREATE PROCEDURA dbo.ShowHierarchy
(
	@Root int,
    @idList varchar (100) PRZESYŁAĆ
)

ZACZYNAĆ
	USTAWIAĆ NOCOUNT DALEJ
	OZNAJMIAĆ @IndID int, @IndName varchar (30)

	USTAWIAĆ @IndName = (WYBRANY ID OD dbo.forum_industries DOKĄD ID = @Root)
	DRUK REPLIKOWAĆ ("-", @@NESTLEVEL * 4) + @INDNAME
    
    USTALONY @IDLIST = @IDLIST + "," + OBSADA (@INDNAME JAKO VARCHAR (100))

	USTALONY @IndID = (WYBRANY MINUTA (ID) OD dbo.forum_industries DOKĄD ParentID = @Root)

	PODCZAS GDY @INDID BYĆ NIEOBOWIĄZUJĄCY
	ZACZYNAĆ

        EXEC dbo.ShowHierarchy @IndID, @idList--, @finalIdList
		USTALONY @IndID = (WYBRANY MINUTA (ID) OD dbo.forum_industries DOKĄD ParentID = @Root I ID > @IndID)
           
    KOŃCÓWKA
	
KOŃCÓWKA


When I dzwonić dzwonić, I dostawać w the wiadomość the dobro ID wystawiać.  The sposób, the @IndName być właściwie the ID i I wymieniać ono lepiej jak tylko I dostawać ten working.

In mój Cyngiel I być pewny dlaczego ono i the wartość z powrotem.  Mój spustowy code

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
ZACZYNAĆ
    OZNAJMIAĆ @IndID int
    OZNAJMIAĆ @idList varchar

	-- Znajdować aktualizować czy my sprawdzać the wkładać lub kasować stół, w zależności od czy rejestr dostawać kasować lub wkładać lub aktualizować.
	jeżeli (wybierać obliczenie (*) od wkładać) <> (0) i (wybierać obliczenie (*) od kasować) = (0) --wszywka
	zaczynać
		WYBIERAĆ @IndID = forum_industriesID OD wkładać
	końcówka
	jeżeli (wybrany obliczenie (*) od wkładać) <> (0) i (wybrany obliczenie (*) od kasować) <> (0) --aktualizacja
	zaczynać
		WYBIERAĆ @IndID = forum_industriesID OD wkładać
	końcówka
	jeżeli (wybrany obliczenie (*) od wkładać) = (0) i (wybrany obliczenie (*) od kasować) <> (0) --deleatur
	zaczynać
		WYBIERAĆ @IndID = forum_industriesID OD kasować
	końcówka
    
        
    USTALONY @idList = (0)
    WYKONYWAĆ ShowHierarchy @IndID, @idList
  -- Zapytanie kod the IDList lub zasadzony na the lista
END


So, mój nadzieja być że mój cyngiel dzwonić ten ShowHIerarchy i przechodzić w the korzeń, i wracać wartość jakby 5,6,7,10,50,100 i I móc 5,6,7,10,50,100 w zapytanie jak: wybrany obliczenie (id) od stół dokąd forum_industriesID W (@idList)

The kod I mieć do tej pory wracać mieć, więc I znać dlaczego the wartość tylny out.

I am całkiem nowy writing przechować procedura i cyngiel i więc jakaś propozycja być najwięcej helpful.

Odpowiedź : SQL 2005 Gniazdować Zaopatrzony Procedura, dlaczego wartość cyngiel

zmiana OZNAJMIAĆ @idList varchar

@idList varchar (100) -- właściwy typ

wtedy na the końcówka twój
triget robić ono lubić thi:


 USTALONY @idList = ''
    WYKONYWAĆ ShowHierarchy @IndID, @idList wydajność
  -- Zapytanie kod the IDList lub zasadzony na the lista

i wtedy dynamiczny sql

oznajmiać @sqlStatement varchar (4000)
ustawiać @sqlStatement = "wybiórka obliczenie (id) od stół dokąd forum_industriesID W (" + @idList + ') '

EXEC (@sqlStatement)

Inne rozwiązania  
 
programming4us programming4us