游标循环处理数据
在开发中,经常会遇到一个场景。需要批量处理数据,循环添加、删除、修改一些数据。
需求:
有 文章表(dbo.Gas_Article)、文章作者表(dbo.Gas_ArticleAuthor)
现在需要在后台统计出每个作者共发布了多少文章,和所有文章阅读量之和的数据
以下是我的处理方案:
编写PROCEDURE,内部利用游标循环处理数据,然后使用SqlServer代理,新建一个作业定时任务处理,这样就可以在后台实时统计了。
1 CREATE PROCEDURE Job_UpdateAuthor --创建PROCEDURE 2 AS 3 BEGIN 4 DECLARE UpdateAuthorCursor CURSOR --定义游标 5 FOR 6 SELECT COUNT(*) AS ArticleNumber , 7 SUM(ShowHits) AS ArticleHits , 8 Author 9 FROM dbo.Gas_Article 10 WHERE Author IN ( SELECT Name 11 FROM dbo.Gas_ArticleAuthor 12 WHERE IsDelete = 0 ) 13 GROUP BY Author --查出需要的数据至游标中 14 15 OPEN UpdateAuthorCursor --打开游标 16 17 DECLARE @Number INT, @Hits INT, @Author NVARCHAR(255) 18 FETCH NEXT FROM UpdateAuthorCursor INTO @Number, @Hits, @Author --读取第一行数据,赋值给变量 19 20 WHILE @@FETCH_STATUS = 0 21 BEGIN 22 UPDATE dbo.Gas_ArticleAuthor 23 SET ArticleNumber = @Number , 24 ArticleHits = @Hits 25 WHERE Name = @Author -- 更新dbo.Gas_ArticleAuthor数据 26 27 FETCH NEXT FROM UpdateAuthorCursor INTO @Number, @Hits, @Author --读取下一行数据 28 END 29 30 CLOSE UpdateAuthorCursor --关闭游标 31 32 DEALLOCATE UpdateAuthorCursor --释放游标 33 END 34 GO
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步