在我的數據庫我有兩個表項(ID,...,ToatlViews int)和ItemViews(ID,項目Id,時間戳)更新另一個表計數從數據列
在ItemViews表我存儲的所有視圖一個項目,因爲他們來到現場。我不時想調用存儲過程來更新Items.ToatlViews字段。我試圖用遊標來做這個SP ...但更新語句是錯誤的。你能幫我糾正它嗎?我可以不用光標做到這一點嗎?
CREATE PROCEDURE UpdateItemsViews
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @currentItemId int
DECLARE @currentItemCursor CURSOR
SET @currentItemCursor = CURSOR FOR SELECT Id FROM dbo.Items
OPEN @currentItemCursor
FETCH NEXT FROM @currentItemCursor INTO @currentItemId
WHILE @@FETCH_STATUS = 0
BEGIN
Update dbo.Items set TotalViews = count(*)
from dbo.ItemViews where [email protected]
FETCH NEXT FROM @currentItemCursor INTO @currentItemId
END
END
GO
我建議你儘量不要在編寫SQL時使用遊標,因爲總會有一種基於「set」的方式來寫你想要的數據庫。當然,這條規則總會有例外。 –