create procedure sp_DescuentoCategoriaInvierno
as
declare @IDProductoOfertado int, @ProductoNombre nvarchar(256), @CategoriaNombre nvarchar(256), @SubcategoriaNombre nvarchar(256), @Precio float
declare cursorProducto cursor for
select o.IDProducto, p.Nombre, c.Nombre, s.Nombre, o.Precio from OfertaProducto as o
inner join Producto as p on o.IDProducto = p.ID
inner join Subcategoria as s on p.IDSubcategoria = s.ID
inner join Categoria as c on s.IDCategoria = c.ID
order by p.Nombre
open cursorProducto
fetch next from cursorProducto into @IDProductoOfertado, @ProductoNombre, @CategoriaNombre, @SubcategoriaNombre, @Precio
while @@FETCH_STATUS = 0
begin
if(@CategoriaNombre='Invierno')
begin
select @Precio --TROUBLE IS HERE.
from OfertaProducto --WHAT SHOULD I DO?
update OfertaProducto set Precio = @Precio * 0.5
end
fetch next from cursorProducto into @IDProductoOfertado, @ProductoNombre, @CategoriaNombre, @SubcategoriaNombre, @Precio
end
close cursorProducto
deallocate cursorProducto
Dies einfach genug ist, ich versuche nur jede OferredProduct in meinem dabase zu haben, die eine Kategorie von ‚invierno‘ hat einen reduzierten Preis:Ärger mit diesem einfachen Stored Procedure
Hier ist das Modell :
Also, was ich es durch jeden OfferedProduct iterieren möchte, wenn es eine Kategorie von ‚Invierno‘ reduzieren den Preis auf 50% aufweist. Ich vermisse etwas Kleines, da bin ich mir sicher. : P
Vielen Dank!
In Ihrem Beispiel ist IDProducto der Fremdschlüssel in meiner rechten Tabelle? –
IDProducto ist das Feld in der OfertaProducto-Tabelle. @IDProductOfertado ist die Variable, die Sie bereits in Ihrer gespeicherten Prozedur definiert haben und die in der FETCH-Anweisung für den Cursor verwendet wird. –