[SQL Server]储存过程中使用临时表循环操作数据


本文为原创文章,转载请注明出处!我的博客地址:http://www.cnblogs.com/txwd

由于工作原因,到目前为此已有一年多没有写SQL Server的储存过程了,已有些生疏。日前工作中有个表的数据需要定时更新,翻了一下以前写的储存过程,在此记录一下。

需求是这样的:

有两张表 1、博主表:Blogger,2、博主对应的文章表:BlogForBlogger

文章表的数据由服务端定时获取,博主表有个字段保存博主文章的总数量,所以这个字段要定时去更新。

实现:创建一个储存过程,然后在数据库中开个作业定时去执行这个储存过程。

-- =============================================
-- Author:        LI
-- Create date:   2017-08-29
-- Description:   更新博主文章总数量
-- =============================================
CREATE PROCEDURE sp_Update_Blogger_Blog_ArticleCount
AS
BEGIN
    declare @account varchar(50);   --博主账号
    declare @count int;             --博主数量
    declare @i int;                 --循环标识
    declare @articleCount int;      --文章数量 
    --把所有博主信息存到临时表
    select * into #temp from(select  Account,Ranking,ROW_NUMBER() over(order by Ranking) as row from Blogger ) b
    select @count = COUNT(1) from #temp;
    set @i = 1;
    --循环临时表
    while (@count >= @i)
       begin
          select @account = Account from #temp where row = @i; --获取当前行的博主账号
          select @articleCount = count(1) from BlogForBlogger where Account = @account;  --获取博主的文章数量
          update Blogger set ArticleCount = @articleCount; --更新博主的文章数量
          set @i = @i + 1;
       end
    drop table #temp; --删除临时表
END
GO

本文为原创文章,转载请注明出处!我的博客地址:http://www.cnblogs.com/txwd

优质内容筛选与推荐>>
1、[iphone]使用RegexKitLite实现正则表达式
2、centos问题收集与解决网址汇总
3、SpringMVC上传文件
4、数据库插入操作
5、UNIX网络编程——客户/服务器程序设计示范(总结)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号