SQL Server loop - how do I loop through a set of records
SQL Server loop - how do I loop through a set of records
By using T-SQL and cursors like this :
DECLARE @MyCursor CURSOR; DECLARE @MyField YourFieldDataType; BEGIN SET @MyCursor = CURSOR FOR select top 1000 YourField from dbo.table where StatusID = 7 OPEN @MyCursor FETCH NEXT FROM @MyCursor INTO @MyField WHILE @@FETCH_STATUS = 0 BEGIN /* YOUR ALGORITHM GOES HERE */ FETCH NEXT FROM @MyCursor INTO @MyField END; CLOSE @MyCursor ; DEALLOCATE @MyCursor; END;
https://stackoverflow.com/questions/28506747/sql-loop-through-each-row-in-a-table
Based on the caption of your question. This is the way I loop through each row of a table using a variable of type TABLE
:
DECLARE @counter INT = 1, @max INT = 0 -- Declare a variable of type TABLE. It will be used as a temporary table. DECLARE @myTable TABLE ( [Id] int identity, [Column1] nvarchar(max), [Column2] nvarchar(100) ) -- Insert your required data in the variable of type TABLE INSERT INTO @myTable SELECT Column1, Column2 FROM [dbo].[YOUR_DATABASE_TABLE] -- Initialize the @max variable. We'll use thie variable in the next WHILE loop. SELECT @max = COUNT(ID) FROM @myTable -- Loop WHILE @counter <= @max BEGIN -- Do whatever you want with each row in your table variable filtering by the Id column SELECT Column1, Column2 FROM @myTable WHERE Id = @counter SET @counter = @counter + 1 END
实例
DECLARE @TempTable TABLE ( RowNumber INT , MemberId INT , Birthday DATETIME ); INSERT INTO @TempTable ( RowNumber , MemberId , Birthday ) SELECT ROW_NUMBER() OVER ( ORDER BY MemberID ASC ) , MemberID , Birthday FROM dbo.vie_mem_16 WHERE Birthday IS NULL; SELECT * FROM @TempTable; DECLARE @CurrentDate DATETIME = '20180604'; DECLARE @CurrentRowNumber INT = 1; DECLARE @MaxRowNumber INT; DECLARE @TempMemberId INT; SELECT @MaxRowNumber = MAX(RowNumber) FROM @TempTable; WHILE ( @CurrentRowNumber <= @MaxRowNumber ) BEGIN SELECT @TempMemberId = MemberId FROM @TempTable WHERE RowNumber = @CurrentRowNumber; UPDATE dbo.tbm_mem_Member_Beneficiary SET Birthday = @CurrentDate WHERE MemberID = @TempMemberId; SET @CurrentRowNumber = @CurrentRowNumber + 1; SET @CurrentDate = DATEADD(DAY, 1, @CurrentDate); END;
作者:Chuck Lu GitHub |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了