[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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章