Это делается с помощью курсора.Зациклите результаты и выполните процедуру.Обратите внимание, что это медленно и, скорее всего, это можно сделать одним оператором удаления.
DECLARE @id int
DECLARE cur_delete CURSOR LOCAL READ_ONLY
FOR select id
from Tasks
where status = 'completed'
OPEN cur_delete
FETCH NEXT FROM cur_delete into @id
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC SP_Task_DEL @id
FETCH NEXT FROM cur_delete into @id
END
CLOSE cur_delete
DEALLOCATE cur_delete
Самый простой способ удалить все выполненные задачи:
DELETE Tasks
where status = 'completed'
Если есть ещеТаблицы, подлежащие очистке, необходимо использовать по следующей схеме.
BEGIN TRAN
DELETE SubTasks
FROM SubTasks st
JOIN Tasks t (updlock)
ON st.id = t.id
WHERE t.status = 'completed'
if @@error <> 0
begin
rollback tran
goto THEEND
end
DELETE Tasks
where status = 'completed'
COMMIT TRAN
THEEND: