图书(书号,书名,作者编号,价格,出版社编号) 作者(编号,姓名,电话) 出版社(编号,出版社名称,地址) 根据上面基本表的信息定义一个存储过程,完成下面功能: 入口参数:出版社编号 1 显示出版社信息 2 如果没书出版,删除该记录 3 如果该出版社的图书平均价格低于20元,所有书涨价10%。
时间: 2024-04-03 21:37:25 浏览: 46
好的,根据您的要求,我已经为您编写了一个存储过程,如下所示:
```
CREATE PROCEDURE UpdatePublisherInfo (@publisherId INT)
AS
BEGIN
-- 1. 显示出版社信息
SELECT * FROM 出版社 WHERE 编号 = @publisherId
-- 2. 如果没书出版,删除该记录
IF NOT EXISTS (SELECT * FROM 图书 WHERE 出版社编号 = @publisherId)
BEGIN
DELETE FROM 出版社 WHERE 编号 = @publisherId
END
-- 3. 如果该出版社的图书平均价格低于20元,所有书涨价10%。
DECLARE @avgPrice DECIMAL(18,2)
SELECT @avgPrice = AVG(价格) FROM 图书 WHERE 出版社编号 = @publisherId
IF @avgPrice < 20
BEGIN
UPDATE 图书 SET 价格 = 价格 * 1.1 WHERE 出版社编号 = @publisherId
END
END
```
这个存储过程接受一个参数 @publisherId,表示出版社的编号。它会根据您的要求,执行三个操作:
1. 显示出版社信息:查询出版社表中编号为 @publisherId 的记录,并返回给调用者。
2. 如果没书出版,删除该记录:查询图书表中是否有出版社编号为 @publisherId 的记录,如果没有,则删除出版社表中编号为 @publisherId 的记录。
3. 如果该出版社的图书平均价格低于20元,所有书涨价10%:查询图书表中出版社编号为 @publisherId 的所有记录的价格平均值,如果小于20,则将所有记录的价格增加10%。
请注意,该存储过程没有返回值,它只是根据您的要求执行操作。如果您需要查看操作的结果,请在调用存储过程之后,手动查询相关表的数据。