Fråga : Appell ett lagrat tillvägagångssätt som innehåller en MARKÖR från ett lagrat tillvägagångssätt

Jag behöver att utföra ett lagrat tillvägagångssätt inifrån another. Jag kan göra denna lyckat med ett undantag, och det är när det kallade lagrade tillvägagångssättet använder en MARKÖR för att gå resultatet tillbaka. Jag har överflöd av lagrade tillvägagångssätt som appellen andra och väljer upp som tillverkas från dem, men i detta fall som jag behöver att länka samman en serie av anknöt rekord in i en markör för singel string.

The för att göra denna, fungerar, dvs. Jag kan visa att den går det korrekt tillbaka stränger men, när jag utför det lagrade tillvägagångssättet som endast innehåller markören mig, få resultatet från markören. Förmiddag som I hoppas har jag, missa något som egentligen är enkel här, och den någon har, att answer.

I har fäst kodifiera för båda lagrade tillvägagångssätt, resultaten från det inre lagrade tillvägagångssättet (det som innehåller markören), som tillverkas av den inre visningen för det lagrade tillvägagångssättet som den fungerar, och någon visning för resultat för SQL-Queryanalysator två resultatuppsättningar ganska än en för den ska kallande lagrade hjälpen för procedure.

Any uppskattas väldeliga.

Query-Result " för _blank " för href=" http://filedb.experts-exchange.com/incoming/2010/08_w32/332516/Query-Result---Inner-Stored-Proc.JPG " target=--- " fileSize " > (32 KB) " javascript för href= " för <-/span>Results bredd " för style= för > class= <-/div>
<-/div>
" l class= >
Query-Result för _blank " " för href=" http://filedb.experts-exchange.com/incoming/2010/08_w32/332517/Query-Result---Outer-Stored-Proc.JPG " target=--- " fileSize " > (44 KB) " javascript för href= " för <-/span>
Results bredd " för style= för > class= för 332517
<-/div>
" " för >
<-/div> > för
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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
" codeBody " class= " notpretty " >/* för
Related lösningar för class= ": title= " att kodifiera för SQL som kodifierar bäst Practice

Svar : Appell ett lagrat tillvägagångssätt som innehåller en MARKÖR från ett lagrat tillvägagångssätt

Asside från de tvivelaktigtt meriterna av det inre lagrade tillvägagångssätt, som är i desperat behov av att recoding, du jämför äpplen till apelsiner. När du testar det, du gör det något liknande detta:

EXEC som usp_NewProductForm_Select_Warehouse_List_For_Printing 1, '',

Yet, när du appellen det, dig gör det något liknande detta:
usp_NewProductForm_Select_Warehouse_List_For_Printing @DocumentID för EXEC, @Warehouse_List TILLVERKAR

Sedan @Warehouse_Listen är OGILTIG och aldrig initialiserad, det är exakt värdera som du går att få baksida, utan hänsyn till ditt ogiltiga bruk av den VALDA @Warehouse_Listen på avsluta av det lagrade tillvägagångssättet.

, om så du är precis pröva att fixa kodifiera, så att den löser problemet, ganska än fixar problemet: än dig behöv att iniitialize värdera av @Warehouse_Listen någonstans.

Du till exempel kan göra ett av efter alternativen:
1. I ditt yttre lagrade tillvägagångssätt:
FÖRKLARA den varchar @Warehouse_Listen (1000)

FASTSTÄLLD @Warehouse_List = '',                -- tillfoga detta fodrar

usp_NewProductForm_Select_Warehouse_List_For_Printing @DocumentID för EXEC, @Warehouse_List TILLVERKAR

2. I ditt inre lagrade tillvägagångssätt
UPPSÄTTNING NOCOUNT PÅ

-/*SET@Warehouse_List = NULL*/
FASTSTÄLLD @Warehouse_List = '',                -- tillfoga detta fodrar

FÖRKLARA varchar @Name (50)

3.  Ändra detta fodrar i det inre lagrade tillvägagångssättet:
    BÖRJA
        -- VÄLJ @Warehouse_Listen = @Warehouse_Listen + @Name + ”,”,
        VÄLJ @WAREHOUSE_LISTEN = ISNULL (@WAREHOUSE_LIST, '') + @NAME + ”,”,           -- Ändra detta fodrar
        HÄMTA DÄREFTER FRÅN Warehouse_Cursor IN I @Name
    AVSLUTA

Och när du får en riskera, behaga ren-write som det lagrade tillvägagångssättet eller den bättre stilla omvänden det till en UDF.
Andra lösningar  
 
programming4us programming4us