图书(书号,书名,作者编号,价格,出版社编号) 作者(编号,姓名,电话) 出版社(编号,出版社名称,地址) 根据上面基本表的信息定义一个存储过程,完成下面功能: 入口参数:出版社编号 1 显示出版社信息 2 如果没书出版,删除该记录 3 如果该出版社的图书平均价格低于20元,所有书涨价10%。
时间: 2024-04-04 10:32:48 浏览: 50
好的,根据你的要求,我已经编写了一个存储过程,代码如下:
```
CREATE PROCEDURE update_publishing_house
@publishing_house_id INT
AS
BEGIN
-- 1. 显示出版社信息
SELECT * FROM 出版社 WHERE 编号 = @publishing_house_id;
-- 2. 如果没书出版,删除该记录
IF NOT EXISTS (SELECT * FROM 图书 WHERE 出版社编号 = @publishing_house_id)
BEGIN
DELETE FROM 出版社 WHERE 编号 = @publishing_house_id;
END;
-- 3. 如果该出版社的图书平均价格低于20元,所有书涨价10%。
DECLARE @avg_price DECIMAL(18, 2) = (
SELECT AVG(价格) FROM 图书 WHERE 出版社编号 = @publishing_house_id
);
IF @avg_price < 20
BEGIN
UPDATE 图书
SET 价格 = 价格 * 1.1
WHERE 出版社编号 = @publishing_house_id;
END;
END;
```
这个存储过程接受一个出版社编号作为入口参数,然后完成你提出的三个功能。首先,它会根据出版社编号显示出版社信息;然后,如果该出版社没有出版任何书籍,则会将该出版社的记录从出版社表中删除;最后,如果该出版社的图书平均价格低于20元,则将所有图书的价格涨价10%。
注意,这个存储过程需要与你的数据库中的表结构相匹配,否则可能会出现错误。另外,由于我是一个 AI,无法直接访问你的数据库,因此你需要将这个存储过程添加到你的数据库中,并根据需要调用它。
阅读全文