W moim DB mam dwie tabele egzemplarze (Id, ..., ToatlViews int) i ItemViews (id, ItemId, Datownik)liczyć Aktualizacja kolumny z danych w innej tabeli
W tabeli ItemViews przechowywać wszystkie widoki przedmiot, gdy przychodzą na stronę. Od czasu do czasu chcę wywołać procedurę przechowywaną, aby zaktualizować pole Items.ToatlViews. Próbowałem zrobić to SP za pomocą kursora ... ale instrukcja aktualizacji jest niepoprawna. Czy możesz mi pomóc to poprawić? Czy mogę to zrobić bez kursora?
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
Zalecam, abyś dołożył wszelkich starań, aby nie używać kursorów podczas pisania SQL, ponieważ zawsze będzie oparty na "zestawie" sposób zapisywania tego, co chcesz, w bazie danych. Oczywiście zawsze będzie wyjątek od tej zasady. –