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.