在我的数据库我有两个表项(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”的方式来写你想要的数据库。当然,这条规则总会有例外。 –