游标循环处理数据

在开发中,常常会遇到一个场景。须要批量处理数据,循环添加、删除、修改一些数据。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
相关文章
相关标签/搜索