Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вызов процедуры для каждой записи  [new]
Michail A.
Member

Откуда:
Сообщений: 96
Добрый день, коллеги.

Если таблица с данными, в ней есть ID записи.

Вопрос в следующем.

Нужно для каждой ID записи таблицы (или для определенного подмножества) применить процедуру, и результат применения процедуры записать во временную таблицу.

Собственно вопрос, есть ли примеры как это можно сделать?
12 фев 19, 12:58    [21807298]     Ответить | Цитировать Сообщить модератору
 Re: вызов процедуры для каждой записи  [new]
Michail A.
Member

Откуда:
Сообщений: 96
дополнение - процедура на вход принимает одно значение (ID).

Вариантов изменить процедуру нет, т.е. есть процедура которую нужно использовать.
12 фев 19, 12:59    [21807301]     Ответить | Цитировать Сообщить модератору
 Re: вызов процедуры для каждой записи  [new]
BredSpit
Member

Откуда:
Сообщений: 20
1) CURSOR на подмножество Exec процедура UPDATE
2)Если процедуру можно в соответствии с существующими ограничениями "превратить" в функцию, то подмножество CROSS/OUTER APPLY с функцией
12 фев 19, 13:03    [21807306]     Ответить | Цитировать Сообщить модератору
 Re: вызов процедуры для каждой записи  [new]
L_argo
Member

Откуда:
Сообщений: 1212
Написать простейший курсор, в котором в цикле передавать параметр в ХП + еще какие-то действия.
12 фев 19, 13:04    [21807307]     Ответить | Цитировать Сообщить модератору
 Re: вызов процедуры для каждой записи  [new]
Michail A.
Member

Откуда:
Сообщений: 96
L_argo, можно пример?
12 фев 19, 13:07    [21807313]     Ответить | Цитировать Сообщить модератору
 Re: вызов процедуры для каждой записи  [new]
L_argo
Member

Откуда:
Сообщений: 1212
Вот готовый кусок с перебором для вызова ХП.
DECLARE .......

DECLARE crItemDoc cursor FAST_FORWARD FORWARD_ONLY
for
select 
  ItemID,
  WhsID,
  PlaceID
from ItemJ
where DocID = @DocID

Open crItemDoc
FETCH NEXT FROM crItemDoc INTO  @ItemID, @WhsID, @PlaceID

WHILE @@FETCH_STATUS = 0
begin
  exec ItemDocMakeBind @ItemID, @WhsID, @PlaceID
  FETCH NEXT FROM crItemDoc INTO  @ItemID, @WhsID, @PlaceID
end

CLOSE crItemDoc
DEALLOCATE crItemDoc
12 фев 19, 13:09    [21807315]     Ответить | Цитировать Сообщить модератору
 Re: вызов процедуры для каждой записи  [new]
Michail A.
Member

Откуда:
Сообщений: 96
L_argo,

большое спасибо!
12 фев 19, 14:43    [21807446]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить