Vraag : SQL 2005 Genestelde Opgeslagen Procedure hoe te om een waarde op een trekker terug te komen

Ik probeer om een opgeslagen procedure te schrijven die ik van een trekker kan roepen die een komma gescheiden identiteitskaart- lijst van de ouder zal terugkeren en het is kinderen.  Dit is wat ik voor de opgeslagen procedure heb:

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 PROCEDURE dbo.ShowHierarchy
(
	@Root int.,
    @idList varchar (100) OUTPUT
)
ZOALS
BEGIN
	PLAATS NOCOUNT
	VERKLAAR @IndID int., @IndName varchar (30)

	PLAATS @INDNAME = (UITGEZOCHTE IDENTITEITSKAART VAN DBO.FORUM_INDUSTRIES WAAR IDENTITEITSKAART = @ROOT)
	DRUK HERHALING („-“, @@NESTLEVEL * 4) + @INDNAME
    
    PLAATS @IDLIST = @IDLIST + „,“ + GEGOTEN (@INDNAME ALS VARCHAR (100))

	PLAATS @INDID = (UITGEZOCHT MIN (IDENTITEITSKAART) VAN DBO.FORUM_INDUSTRIES WAAR ParentID = @ROOT)

	TERWIJL @INDID NIET ONGELDIG IS
	BEGIN

        EXEC dbo.ShowHierarchy @IndID, @idList--, @finalIdList
		REEKS @INDID = (UITGEZOCHT MIN (IDENTITEITSKAART) VAN DBO.FORUM_INDUSTRIES WAAR ParentID = @ROOT EN IDENTITEITSKAART > @INDID)
           
    EIND
	
EIND


When roep ik dit, krijg ik in het bericht juiste getoond id's.  Door de manier, is @IndName eigenlijk identiteitskaart en ik zal het beter noemen zodra ik dit working.

In mijn Trekker krijg ik niet zeker ben hoe te om het te roepen en de waarderug te krijgen.  Mijn trekker 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:
BEGIN
    VERKLAAR @IndID int.
    VERKLAAR @idList varchar

	-- Kom of wij de opgenomen of geschrapte lijst controleren, afhankelijk van te weten of een verslag geschrapt of opgenomen of bijgewerkt wordt.
	als (uitgezochte telling (*) van opgenomen) <> 0 en (uitgezochte telling (*) van geschrapt) = 0 --tussenvoegsel
	begin
		SELECTEER @IndID = forum_industriesID UIT opgenomen
	eind
	als (uitgezochte telling (*) van opgenomen) <> 0 en (uitgezochte telling (*) van geschrapt) <> 0 --update
	begin
		SELECTEER @IndID = forum_industriesID UIT opgenomen
	eind
	als (uitgezochte telling (*) van opgenomen) = 0 en (uitgezochte telling (*) van geschrapt) <> 0 --schrap
	begin
		SELECTEER @IndID = forum_industriesID UIT geschrapt
	eind
    
        
    VASTGESTELDE @idList = 0
    VOER ShowHierarchy uit @IndID, @idList
  -- Vraag code om IDList op te slaan of te selecteren gebaseerd op de lijst
END


So, mijn hoop is dat mijn trekker dit ShowHIerarchy zal roepen en in de wortel, zal overgaan en een waarde als 5.6.7.10.50.100 zal terugkeren en ik kan dat in een vraag als gebruiken: selecteer telling (identiteitskaart) van lijst waar forum_industriesID IN (@idList) code

The die ik tot dusver niets terugkeert heb gehad, zodat weet ik het hoe te om de waarden out.

I am vrij nieuw terug te krijgen aan het schrijven van opgeslagen procedures en trekkers en zodat zouden geen suggesties het meeste helpful.
zijn

Antwoord : SQL 2005 Genestelde Opgeslagen Procedure hoe te om een waarde op een trekker terug te komen

de verandering VERKLAART @idList varchar

om @idList varchar TE VERKLAREN (100) -- om een juist type te zijn

dan op het eind van uw
triget het als thi:


 PLAATS @idList = ''
    VOER ShowHierarchy uit @IndID, @idListoutput
  -- Vraag code om IDList op te slaan of te selecteren gebaseerd op de lijst

en toen dynamische sql

verklaar @sqlStatement varchar (4000)
plaats @sqlStatement = „uitgezochte telling (identiteitskaart) van lijst waar forum_industriesID IN (“ + @idList + ') '

EXEC (@sqlStatement)

Andere oplossingen  
 
programming4us programming4us