天天看點

[SQL Server]儲存過程中使用臨時表循環操作資料

https://www.cnblogs.com/txwd/p/7447444.html

由于工作原因,到目前為此已有一年多沒有寫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