在开发中,常常会遇到一个场景。须要批量处理数据,循环添加、删除、修改一些数据。spa
需求:代理
有 文章表(dbo.Gas_Article)、文章做者表(dbo.Gas_ArticleAuthor)code
如今须要在后台统计出每一个做者共发布了多少文章,和全部文章阅读量之和的数据blog
如下是个人处理方案:开发
编写PROCEDURE,内部利用游标循环处理数据,而后使用SqlServer代理,新建一个做业定时任务处理,这样就能够在后台实时统计了。it
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