SqlServer使用For循环结合游标更新数据
2018-12-27 本文已影响0人
天天向上卡索
SqlServer使用For循环更新数据
Intro
有时候,可能会有一些需求更新一部分数据,需要遍历,但是又不想专门写一个小工具,还是觉得写个 sql 语句比较方便。
Let's do it
话不多说,亮代码,Show me the code:
DECLARE @projectId nvarchar(36)
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT OriginalProjectId FROM dbo.CommunityProjects
WHERE CommunityId = -1) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @projectId;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE dbo.CommunityProjects
SET CommunityId = CAST(ISNULL((
SELECT ZhongyiCommunityId FROM dbo.CommunityMappings
WHERE FangdiCommunityId = @projectId
),'-1') AS INT)
WHERE OriginalProjectId = @projectId
FETCH NEXT FROM My_Cursor INTO @projectId;
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标