图书(书号,书名,价格,出版社) 读者(卡号,姓名,年龄,所属单位) 借阅(书号,卡号,借阅日期) 根据上面基本表的信息定义一个存储过程,完成下面功能: 入口参数:书号 1 显示图书借阅信息 2 如果没人借,删除该书记录 3 如果价格5元以下,涨价至5元。
时间: 2024-04-03 09:36:57 浏览: 64
好的,根据您的要求,下面是一个用于实现上述功能的存储过程:
```sql
CREATE PROCEDURE book_info_proc(IN book_id INT)
BEGIN
-- 声明临时变量
DECLARE borrow_count INT;
DECLARE book_price FLOAT;
-- 查询图书借阅信息
SELECT COUNT(*) INTO borrow_count FROM borrow WHERE book_id = book_id;
-- 如果没有人借阅该书,则删除该书记录
IF borrow_count = 0 THEN
DELETE FROM book WHERE book_id = book_id;
END IF;
-- 查询图书价格
SELECT price INTO book_price FROM book WHERE book_id = book_id;
-- 如果价格低于 5 元,则将价格涨至 5 元
IF book_price < 5 THEN
UPDATE book SET price = 5 WHERE book_id = book_id;
END IF;
-- 显示图书借阅信息
SELECT b.book_id, b.book_name, b.price, b.publisher, br.card_id, r.reader_name, r.age, r.department, br.borrow_date
FROM borrow br
JOIN book b ON br.book_id = b.book_id
JOIN reader r ON br.card_id = r.card_id
WHERE br.book_id = book_id;
END;
```
该存储过程的入口参数为书号(book_id),它将执行以下操作:
1. 查询该书的借阅信息,并显示出来。
2. 如果该书没有被借阅,则删除该书记录。
3. 如果该书的价格低于 5 元,则将价格涨至 5 元。
您可以根据需要调用该存储过程,并传入书号作为参数,以便完成相应的操作。
阅读全文