En mi DB Tengo dos tablas Artículos (id, ..., ToatlViews int) y ItemViews (id, ItemId, fecha y hora)actualización número de columnas a partir de datos de otra tabla
En la tabla I ItemViews almacenar todos los puntos de vista de un artículo cuando llegan al sitio. De vez en cuando deseo llamar a un procedimiento almacenado para actualizar el campo Items.ToatlViews. Intenté hacer este SP usando un cursor ... pero la declaración de actualización es incorrecta. ¿Me puedes ayudar a corregirlo? ¿Puedo hacer esto sin cursor?
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
Te recomiendo que hagas todos los esfuerzos posibles para no utilizar los cursores cuando escribas SQL, ya que siempre habrá una forma basada en 'set' para escribir lo que quieras contra la base de datos. Por supuesto, siempre habrá una excepción a esta regla. –