Как пройти через выборку и использовать возвращаемое значение в запросе вставки в SQL Server - PullRequest
1 голос
/ 27 февраля 2012

Я создаю хранимую процедуру на сервере SQL и хочу добиться следующего:

Мне нужно найти все ResourceID (может быть любое количество ресурсов) для определенного ClientID в таблице ресурсов.,Затем мне нужно вставить строку в таблицу планирования для каждого найденного ResourceID.

Так что у меня будет что-то вроде

WHILE EXISTS (SELECT ResourceID AS @ResourceID FROM Resources WHERE ClientID = @ClientID)
BEGIN
    INSERT INTO Planning (ResourceID, Date)
    VALUES (@ResourceID, @Date)
NEXT
END

Я уже обнаружил, что использование курсора может быть способом, но это не приводит меня к чему-либо полезному

Ответы [ 2 ]

3 голосов
/ 27 февраля 2012

Нет необходимости в циклах:

INSERT INTO Planning (ResourceID, Date)
SELECT ResourceID, GETDATE()
FROM Resources 
WHERE ClientID = @ClientID

Как правило, рекомендуется избегать циклов / курсоров в SQL.По возможности используйте заданные параметры.

2 голосов
/ 27 февраля 2012

Нет необходимости в курсоре.Держите это на основе набора:

insert into planning (resourceid, date)
select resourceid, @SomeDate
from resources
where clientid = @ClientId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...