Asside dai meriti dubbiosi di quella procedura immagazzinata interna che è nel bisogno disperato della ricodificazione, state confrontando le mele agli aranci. Quando state provandolo state facendolo gradite questo:
EXEC che usp_NewProductForm_Select_Warehouse_List_For_Printing 1, ''
Tuttavia, quando lo denominate, state facendolo gradite questo:
@DocumentID usp_NewProductForm_Select_Warehouse_List_For_Printing di EXEC, USCITA di @Warehouse_List
Poiché il @Warehouse_List è NULLO e non inizializzato mai, quello è esattamente il valore che state andando ottenere indietro, senza riguardo al vostro uso non valido del @Warehouse_List PRESCELTO alla conclusione della procedura immagazzinata.
Così se stiate provando appena a riparare il codice in modo che risolva il problema, piuttosto del problema: che voi dovere iniitialize il valore del @Warehouse_List in qualche luogo.
Per esempio potete fare una di seguenti opzioni:
1. Nella vostra procedura immagazzinata esterna:
DICHIARARE il @Warehouse_List varchar (1000)
REGOLARE il @Warehouse_List = '' -- aggiungere questa linea
@DocumentID usp_NewProductForm_Select_Warehouse_List_For_Printing di EXEC, USCITA di @Warehouse_List
2. Nella vostra procedura immagazzinata interna
REGOLARE NOCOUNT SOPRA
@Warehouse_List di/*SET = NULL*/
REGOLARE il @Warehouse_List = '' -- aggiungere questa linea
DICHIARARE il @Name varchar (50)
3. Cambiare questa linea nella procedura immagazzinata interna:
COMINCIARE
-- SELEZIONARE il @Warehouse_List = il @Warehouse_List + il @Name + “,„
SELEZIONARE IL @WAREHOUSE_LIST = ISNULL (@WAREHOUSE_LIST, '') + IL @NAME + “,„ -- Cambiare questa linea
ANDARE A PRENDERE DOPO da Warehouse_Cursor in @Name
ESTREMITÀ
E quando avete prego una probabilità riscrivere che procedura immagazzinata o migliorare ancora il convertito esso ad un UDF.