У меня есть таблица #tmpName с одним столбцом, [Name].Использовать верхнюю часть 1, а затем удалить?
Без использования курсора я хотел бы взять каждую строку #tmpName (это технически одно имя), сделать что-то с этим именем, а затем удалить из #tmpName.
Я начал с чего-то подобного, но это очень медленно, и в итоге я получаю исключение из памяти, которое не имеет смысла в таблице из 700 строк. Я предполагаю, что это связано с тем, что я не приказывая при выполнении удаления вершины 1.
drop table #tmpName ;
with cte as (
select Name from [Employees]
group by Name
)
select Name into #tmpName From cte
declare @count int = 0
while @@rowcount <> 0
begin
select top 1 Name From #tmpName order by Name asc
--do stuff with top 1
delete top (1) from #tmpName
select @count = @count + 1
select @count
END
я понял, то, что я мог бы использовать это DELETE, чтобы лучше удалить TOP 1, но я не уверен, как обрабатывать каждый из которых я удаляю.
WITH q AS
(
SELECT TOP 1 Name into @Name
FROM #tmpName
order by Name
)
DELETE
FROM q
любая помощь приветствуется.
'в то время как @@ ROWCOUNT <> 0 начать ... выберите @count END' раз начавшись является бесконечный цикл. Последний выбор цикла всегда возвращает значение @count и устанавливает @@ rowcount равным 1, поэтому цикл будет повторяться снова. –