Question : Appeler un procédé stocké contenant un CURSEUR d'un procédé stocké

Je dois exécuter un procédé stocké des autres. Je peux faire ceci avec succès à une exception et c'est quand le procédé stocké appelé utilise un CURSEUR pour renvoyer le résultat. J'ai l'abondance des procédures stockées qui appellent d'autres et prennent le rendement de elles mais dans ce cas-ci je dois enchaîner une série de disques liés dans un curseur simple de string.

The pour faire ceci des travaux, c.-à-d. Je peux montrer qu'il renvoie la corde correcte mais quand j'exécute le procédé stocké contenant le curseur je seulement obtenir le résultat du curseur. Je suis espérant moi ai manqué quelque chose vraiment simple ici et ce quelqu'un a qu'answer.

I ont attaché le code pour les deux procédures stockées, les résultats du procédé stocké intérieur (celui contenant le curseur), le rendement de l'apparence intérieure de procédé stocké que cela fonctionne et quelques résultats d'analyseur de question de SQL montrant deux ensembles de résultat plutôt qu'un pour l'aide stockée appelante de procedure.

Any seront considérablement appréciés. le class= le class= >

Query-Result de " _blank " de target= de " http://filedb.experts-exchange.com/incoming/2010/08_w32/332516/Query-Result---Inner-Stored-Proc.JPG " de href=---Le class= " fileSize " > (32 KBs) Javascript de href= le " de " attachmentDetails de class= " de (type de dossier détails) largeur de " style= de >
" " l class= >
" fileSize " > (44 KBs) Javascript de href= le " de " attachmentDetails de class= " de (type de dossier détails) largeur de " style= de >
le " le " de >
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
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 :
class= >/* " notpretty " de l'id= le " codeSnippet866627 " de
           
class= > " clair " de
solutions >Related class= SERVEUR de >SQL de " qRelatedChild " de class= codant pratiques " de title= " du href= " /Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_26372040.html " de

Réponse : Appeler un procédé stocké contenant un CURSEUR d'un procédé stocké

Asside des mérites douteux de ce procédé stocké intérieur qui est dans le besoin désespéré du recodage, vous comparez des pommes aux oranges. Quand vous l'examinez vous le faites aimez ceci :

EXEC usp_NewProductForm_Select_Warehouse_List_For_Printing 1, ''

Cependant, quand vous l'appelez, vous le faites aimez ceci :
@DocumentID usp_NewProductForm_Select_Warehouse_List_For_Printing d'EXEC, RENDEMENT de @Warehouse_List

Puisque le @Warehouse_List est NUL et non jamais initialisé, c'est exactement la valeur que vous allez récupérer, indépendamment de votre utilisation inadmissible de @Warehouse_List CHOISI à la fin du procédé stocké.

Ainsi si vous essayez juste de fixer le code de sorte qu'il résolve le problème, plutôt que fixent le problème : que vous devoir iniitialize la valeur du @Warehouse_List quelque part.

Par exemple vous pouvez faire une des options suivantes :
1. De votre procédé stocké externe :
DÉCLARER le @Warehouse_List varchar (1000)

PLACER le @Warehouse_List = ''                -- ajouter cette ligne

@DocumentID usp_NewProductForm_Select_Warehouse_List_For_Printing d'EXEC, RENDEMENT de @Warehouse_List

2. De votre procédé stocké intérieur
PLACER NOCOUNT DESSUS

@Warehouse_List de/*SET = NULL*/
PLACER le @Warehouse_List = ''                -- ajouter cette ligne

DÉCLARER le @Name varchar (50)

3.  Changer cette ligne du procédé stocké intérieur :
    COMMENCER
        -- CHOISIR le @Warehouse_List = le @Warehouse_List + le @Name + « , »
        CHOISIR LE @WAREHOUSE_LIST = L'ISNULL (@WAREHOUSE_LIST, '') + LE @NAME + « , »           -- Changer cette ligne
        CHERCHER APRÈS de Warehouse_Cursor DANS le @Name
    EXTRÉMITÉ

Et quand vous obtenez une chance svp récrire que procédé stocké ou améliorer toujours le converti il à un UDF.
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us