2.创建存储过程p_changePrice,使用它可以给属于某一类别的商品调价(给定类别名称和调价比例),也可以给某一种产品调(给定产品名称和调价比例),还可以给某一品牌的产品调价(给定品牌名称和调价比例)。 完成后调用该存储过程,作以下调价操作: (1)把“婴儿用品”类商品加价20%; (2)所有“奶粉”涨价15%; (3)燕唐旗下商品全面调整,打八五折优惠。 category表有字段id,name,有属性婴儿用品和奶粉。 Goods表中有字段cat_id(与category表中id对应),name,price,brand, 其中brand有数据燕塘。
时间: 2024-02-22 11:54:59 浏览: 62
好的,以下是创建存储过程p_changePrice的SQL代码:
```
CREATE PROCEDURE p_changePrice
@categoryName varchar(50) = null,
@productName varchar(50) = null,
@brandName varchar(50) = null,
@priceChange decimal(18,2)
AS
BEGIN
SET NOCOUNT ON;
IF @categoryName IS NOT NULL
BEGIN
UPDATE Goods
SET price = price * (1 + @priceChange)
FROM Goods g
INNER JOIN Category c ON g.cat_id = c.id
WHERE c.name = @categoryName;
END
IF @productName IS NOT NULL
BEGIN
UPDATE Goods
SET price = price * (1 + @priceChange)
WHERE name = @productName;
END
IF @brandName IS NOT NULL
BEGIN
UPDATE Goods
SET price = price * (1 - @priceChange)
WHERE brand = @brandName;
END
END
```
然后我们可以按照要求调用该存储过程实现调价操作:
```
-- 把“婴儿用品”类商品加价20%
EXEC p_changePrice '婴儿用品', null, null, 0.2;
-- 所有“奶粉”涨价15%
EXEC p_changePrice null, '奶粉', null, 0.15;
-- 燕唐旗下商品全面调整,打八五折优惠
EXEC p_changePrice null, null, '燕塘', 0.15;
```
阅读全文