Cuestión : Llamar un procedimiento almacenado que contiene un CURSOR de un procedimiento almacenado

Necesito ejecutar un procedimiento almacenado dentro de otro. Puedo hacer esto con éxito con una excepción y ésa es cuando el procedimiento almacenado llamado utiliza un CURSOR para volver el resultado. Tengo un montón de procedimientos almacenados que llamen otros y cojan la salida de ellos pero en este caso necesito concatenar una serie de expedientes ligados en un solo cursor de string.

The para hacer esto los trabajos, es decir. Puedo demostrar que vuelve la secuencia correcta pero cuando ejecuto el procedimiento almacenado que contiene el cursor yo solamente conseguir el resultado del cursor. Soy esperando yo he faltado algo realmente simple aquí y ese alguien tiene que answer.

I han atado el código para ambos procedimientos almacenados, los resultados del procedimiento almacenado interno (el que está que contiene el cursor), la salida de la demostración interna del procedimiento almacenado que trabaja y algunos resultados del analizador de pregunta del SQL que demuestran dos sistemas del resultado algo que uno para la ayuda almacenada de llamada de procedure.

Any serán apreciados grandemente. el class= " class= >

Query-Result del " _blank " del target= de " http://filedb.experts-exchange.com/incoming/2010/08_w32/332516/Query-Result---Inner-Stored-Proc.JPG " del href=---El class= " fileSize " > (32 KB) Javascript del href= " de los " attachmentDetails del class= " de (tipo de archivo detalles) anchura style= del >
Results para: 550px; altura: 183px; " alt= de http://filedb.experts-exchange.com/incoming/2010/08_w32/t332516/Query-Result---Inner-Stored-Proc.JPG " del” src= class= >
" l class= >
(44 KB) Javascript del href= " de los " attachmentDetails del class= " de (tipo de archivo detalles) anchura style= del >Results para: 550px; altura: 248px; alt= " de http://filedb.experts-exchange.com/incoming/2010/08_w32/t332517/Query-Result---Outer-Stored-Proc.JPG del” src= " el " class= de 332517 "/>
del >
class= > " claro " del
> del " codeSnippet " del class= del
class= " lineNumbers " del
class= del
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:
el class= >/* " notpretty " del id= " codeSnippet866627 " del
           
class= > " claro " del
soluciones >Related class= title= " SERVIDOR del href= " /Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_26372040.html " del SQL del " qRelatedChild " del class= de la mejor práctica " de la codificación del SERVIDOR del SQL que cifra el mejor Practice

Respuesta : Llamar un procedimiento almacenado que contiene un CURSOR de un procedimiento almacenado

Asside de los méritos dudosos de ese procedimiento almacenado interno que esté en la necesidad desesperada de la recodificación, usted está comparando manzanas a las naranjas. Cuando usted la está probando usted la está haciendo tiene gusto de esto:

EXEC usp_NewProductForm_Select_Warehouse_List_For_Printing 1, ''

Con todo, cuando usted la llama, usted la está haciendo tiene gusto de esto:
@DocumentID usp_NewProductForm_Select_Warehouse_List_For_Printing de EXEC, SALIDA del @Warehouse_List

Puesto que el @Warehouse_List es NULO y nunca inicializado, ése es exactamente el valor que usted va a conseguir detrás, sin importar su uso inválido del @Warehouse_List SELECTO en el final del procedimiento almacenado.

Tan si usted apenas está intentando fijar el código de modo que resuelva el problema, algo que el problema: que usted necesitar iniitialize el valor del @Warehouse_List en alguna parte.

Por ejemplo usted puede hacer una de las opciones siguientes:
1. En su procedimiento almacenado externo:
DECLARAR el @Warehouse_List varchar (1000)

FIJAR el @Warehouse_List = ''                -- agregar esta línea

@DocumentID usp_NewProductForm_Select_Warehouse_List_For_Printing de EXEC, SALIDA del @Warehouse_List

2. En su procedimiento almacenado interno
FIJAR NOCOUNT ENCENDIDO

@Warehouse_List de/*SET = NULL*/
FIJAR el @Warehouse_List = ''                -- agregar esta línea

DECLARAR el @Name varchar (50)

3.  Cambiar esta línea en el procedimiento almacenado interno:
    COMENZAR
        -- SELECCIONAR el @Warehouse_List = el @Warehouse_List + el @Name + “,”
        SELECCIONAR EL @WAREHOUSE_LIST = ISNULL (@WAREHOUSE_LIST, '') + EL @NAME + “,”           -- Cambiar esta línea
        TRAER DESPUÉS de Warehouse_Cursor EN @Name
    EXTREMO

Y cuando usted consigue una ocasión por favor reescribir que procedimiento almacenado o todavía mejorar a convertido él a un UDF.
Otras soluciones  
 
programming4us programming4us