私のDBには、Items(Id、...、ToatlViews int)とItemViews(id、ItemId、Timestamp)の2つのテーブルがあります。
ItemViewsテーブルには、サイトに到着したアイテムのすべてのビューを保存します。時々、ストアドプロシージャを呼び出してItems.ToatlViewsフィールドを更新したいと思います。カーソルを使用してこのSPを実行しようとしましたが、updateステートメントが間違っています。それを修正するのを手伝ってもらえますか?カーソルなしでこれを行うことはできますか?
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 ItemId=@currentItemId
FETCH NEXT FROM @currentItemCursor INTO @currentItemId
END
END
GO