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.