zoukankan      html  css  js  c++  java
  • 游标循环处理数据

    在开发中,经常会遇到一个场景。需要批量处理数据,循环添加、删除、修改一些数据。

    需求:

    有 文章表(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
  • 相关阅读:
    abcde =(ab+cd)的平方
    求水仙花数
    VS2019 开发 MFC ACtivex (OCX)控件
    简单体验pdfjs,并且隐藏下载、打印等按钮
    体验win10的linux子系统
    nodejs 连接 mysql 查询事务处理
    Linux系統日常運維管理
    hexo豆瓣卡片安裝遇到的坑
    ZooKeeper 是什么与概述,典型用例
    K8S_Kubernetes
  • 原文地址:https://www.cnblogs.com/meowv/p/10135388.html
Copyright © 2011-2022 走看看