当谈到在 T-SQL 中循环遍历大量数据时,我在 Internet 上看到的大多数示例都使用这样的模式:
declare @someVariable int
declare @remainingRows int
select someColumn from someTables into #someTempTable
select @remainingRows = count(*) from #someTempTable
while @remainingRows > 0 begin
select top 1 @someVariable = someColumn from #someTempTable
-- Do stuff
delete top 1 from #someTempTable
select @remainingRows = count(*) from #someTempTable
end
Run Code Online (Sandbox Code Playgroud)
这似乎比使用这样的游标的示例更常见:
declare @someVariable int
select someColumn from someTables into #someTempTable
declare @someCursor cursor for select someColumn from #someTempTable
open @someCursor
fetch next @someVariable from @someCursor
while @@fetch_status = 0 …Run Code Online (Sandbox Code Playgroud)