创建带输入参数的存储过程,输入书名,查询借阅了该书读者的信息,结果包含读者编号、读者姓名、书名和借阅日期, 然后调用该存储过程查询用mysql 语句实现借阅了图书“数学分析习题演练”的读者的信息
时间: 2024-02-12 08:02:52 浏览: 169
好的,以下是创建存储过程的 MySQL 代码:
```
CREATE PROCEDURE get_borrower_info(IN book_name VARCHAR(255))
BEGIN
SELECT borrower_id, borrower_name, book_name, borrow_date
FROM borrow
WHERE book_name = book_name;
END
```
接下来,你可以使用以下代码调用该存储过程:
```
CALL get_borrower_info('数学分析习题演练');
```
这将返回借阅了“数学分析习题演练”的读者的信息,包括读者编号、读者姓名、书名和借阅日期。
相关问题
创建带输入参数的储存过程,输入姓名,显示是否逾期未还图书,学生的借阅天数超60天,教师的借阅天数超90天则为逾期读者,结果包含读者姓名,读者类别,书名,借阅日期和超期天数
创建一个带输入参数的存储过程通常用于数据库管理系统中,比如MySQL。这个过程可以接收学生的姓名作为参数,检查他们是否有书籍超出借阅期限。以下是描述该存储过程的一般步骤:
```sql
DELIMITER //
CREATE PROCEDURE CheckOverdueBooks(IN studentName VARCHAR(100), OUT readerCategory ENUM('学生', '教师'), IN bookTitle VARCHAR(100), DATE_IN_DATE DATE, OUT overdueDays INT)
BEGIN
DECLARE isStudent BOOLEAN DEFAULT TRUE; -- 默认为学生读者
SET readerCategory = '学生'; -- 初始值
-- 检查学生借阅记录
SELECT
CASE WHEN DATEDIFF(CURRENT_DATE, borrow_date) > 60 THEN '超过'
ELSE NULL
END AS days_overdue
INTO @days_overdue
FROM borrow_records
WHERE borrower_name = studentName AND book_title = bookTitle;
IF @days_overdue IS NOT NULL THEN
SET overdueDays = @days_overdue;
IF @days_overdue > 0 THEN
SET readerCategory = '学生';
ELSE
SET isStudent = FALSE;
END IF;
END IF;
-- 如果不是学生,检查教师记录
IF NOT isStudent THEN
SELECT
CASE WHEN DATEDIFF(CURRENT_DATE, borrow_date) > 90 THEN '超过'
ELSE NULL
END AS days_overdue
INTO @days_overdue
FROM borrow_records
WHERE teacher_name = studentName AND book_title = bookTitle;
IF @days_overdue IS NOT NULL THEN
SET overdueDays = @days_overdue;
SET readerCategory = '教师';
END IF;
END IF;
-- 输出结果
IF readerCategory = '学生' THEN
SELECT studentName, readerCategory, bookTitle, DATE_IN_DATE, overdueDays;
ELSEIF readerCategory = '教师' THEN
SELECT teacherName, readerCategory, bookTitle, DATE_IN_DATE, overdueDays;
END IF;
END //
DELIMITER ;
```
查询借阅的书名称中包含“数据”的读者的借阅信息,结果包含读者姓名和书名。
您可以使用如下的 SQL 语句查询借阅的书名称中包含“数据”的读者的借阅信息,结果包含读者姓名和书名:
```
SELECT 读者.姓名, 图书.书名
FROM 借阅
INNER JOIN 读者 ON 借阅.读者编号 = 读者.编号
INNER JOIN 图书 ON 借阅.书号 = 图书.书号
WHERE 图书.书名 LIKE '%数据%' AND 借阅.借阅状态 = '借阅';
```
其中,`借阅` 表是存储借阅信息的表,包括字段:`读者编号`、`书号`、`借阅状态` 等。`读者` 表是存储读者信息的表,包括字段:`编号`、`姓名` 等。`图书` 表是存储图书信息的表,包括字段:`书号`、`书名` 等。该 SQL 语句使用了 `INNER JOIN` 连接了三个表,然后使用 `WHERE` 子句过滤出借阅状态为借阅且书名包含“数据”的借阅信息,最后从中查询出了读者姓名和书名这两个字段。
阅读全文