Asside dos méritos duvidosos desse procedimento armazenado interno que está na necessidade desesperada de recoding, você está comparando maçãs às laranjas. Quando você a está testando você está fazendo-a gosta disto:
EXEC que usp_NewProductForm_Select_Warehouse_List_For_Printing 1, ''
Contudo, quando você a chama, você está fazendo-a gosta disto:
@DocumentID usp_NewProductForm_Select_Warehouse_List_For_Printing de EXEC, SAÍDA do @Warehouse_List
Desde que o @Warehouse_List é NULO e nunca inicializado, aquele é exatamente o valor que você está indo receber de volta, não obstante seu uso inválido do @Warehouse_List SELETO no fim do procedimento armazenado.
Assim se você apenas está tentando reparar o código de modo que resolva o problema, um pouco do que repara o problema: do que você precisar de iniitialize em algum lugar o valor do @Warehouse_List.
Por exemplo você pode fazer uma das seguintes opções:
1. Em seu procedimento armazenado exterior:
DECLARAR o @Warehouse_List varchar (1000)
AJUSTAR o @Warehouse_List = '' -- adicionar esta linha
@DocumentID usp_NewProductForm_Select_Warehouse_List_For_Printing de EXEC, SAÍDA do @Warehouse_List
2. Em seu procedimento armazenado interno
AJUSTAR NOCOUNT SOBRE
@Warehouse_List de/*SET = NULL*/
AJUSTAR o @Warehouse_List = '' -- adicionar esta linha
DECLARAR o @Name varchar (50)
3. Mudar esta linha no procedimento armazenado interno:
COMEÇAR
-- SELECIONAR o @Warehouse_List = o @Warehouse_List + o @Name + “,”
SELECIONAR O @WAREHOUSE_LIST = O ISNULL (@WAREHOUSE_LIST, '') + O @NAME + “,” -- Mudar esta linha
BUSCAR EM SEGUIDA de Warehouse_Cursor no @Name
EXTREMIDADE
E quando você começ uma possibilidade por favor reescrever que procedimento armazenado ou melhorar ainda o converso ele a um UDF.