Не удалось найти хранимую процедуру 'exec _bspWhUtilAddAllStkToWh 2' - PullRequest
0 голосов
/ 05 сентября 2018

Я разработал следующий скрипт:

declare @query  nvarchar(1000)
declare @Loop   int

declare @Whse table
    (   ID  int identity primary key
    ,   WhseLink    int)

    insert into @Whse
    (   WhseLink    )
    select WhseLink from WhseMst

    select @Loop = min(ID) from @Whse
    while @Loop is not null

    begin
        set @query  = 'exec _bspWhUtilAddAllStkToWh('+cast((select WhseLink from @Whse where ID = @Loop) as varchar)+')'
        exec @query
        select @Loop = min(ID) from @Whse where ID>@Loop
    end

На основании вышеизложенного я получаю следующую ошибку:

Не удалось найти хранимую процедуру 'exec _bspWhUtilAddAllStkToWh 2'

Я проверил следующую Ссылку , с которой у пользователя также возникла та же проблема, но я думаю, что эта проблема отличается от той, потому что Хранимая Процедура действительно существует, и когда я запускаю тот же скрипт отдельно, он работает.

Я попытался добавить скобки, чтобы @query в конечном итоге выглядел так: 'exec (_bspWhUtilAddAllStkToWh) 2', но я все еще получаю ту же ошибку.

Чего мне не хватает?

1 Ответ

0 голосов
/ 05 сентября 2018

В идеале вы должны избегать зацикливания любой ценой. В вашей ситуации я бы подумал об изменении вашей процедуры для получения табличной функции, чтобы вы могли получать всю коллекцию Warehouse Links и делать все, что в вашей процедуре, на всем наборе. Но если вы не можете этого сделать, вы можете использовать курсор здесь и забыть динамический sql, потому что он не нужен.

Что-то вроде этого намного проще.

declare @WarehouseLink int
declare Warehouses cursor local fast_forward 
for
    select WhseLink 
    from WhseMst

fetch next from Warehouses into @WarehouseLink

while @@FETCH_STATUS = 0 
begin
    exec _bspWhUtilAddAllStkToWh @WarehouseLink

    fetch next from Warehouses into @WarehouseLink
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...