在开发中,经常会遇到一个场景。需要批量处理数据,循环添加、删除、修改一些数据。
需求:
有 文章表(dbo.Gas_Article)、文章作者表(dbo.Gas_ArticleAuthor)
现在需要在后台统计出每个作者共发布了多少文章,和所有文章阅读量之和的数据
以下是我的处理方案:
编写PROCEDURE,内部利用游标循环处理数据,然后使用SqlServer代理,新建一个作业定时任务处理,这样就可以在后台实时统计了。
CREATE PROCEDURE Job_UpdateAuthor --创建PROCEDUREASBEGINDECLARE UpdateAuthorCursor CURSOR --定义游标FORSELECT COUNT(*) AS ArticleNumber ,SUM(ShowHits) AS ArticleHits ,AuthorFROM dbo.Gas_ArticleWHERE Author IN ( SELECT NameFROM dbo.Gas_ArticleAuthorWHERE IsDelete = 0 )GROUP BY Author --查出需要的数据至游标中OPEN UpdateAuthorCursor --打开游标DECLARE @Number INT, @Hits INT, @Author NVARCHAR(255)FETCH NEXT FROM UpdateAuthorCursor INTO @Number, @Hits, @Author --读取第一行数据,赋值给变量WHILE @@FETCH_STATUS = 0BEGINUPDATE dbo.Gas_ArticleAuthorSET ArticleNumber = @Number ,ArticleHits = @HitsWHERE Name = @Author -- 更新dbo.Gas_ArticleAuthor数据FETCH NEXT FROM UpdateAuthorCursor INTO @Number, @Hits, @Author --读取下一行数据ENDCLOSE UpdateAuthorCursor --关闭游标DEALLOCATE UpdateAuthorCursor --释放游标ENDGO