2、在MyDB中创建带参数的存储过程proc_2,参数@spec用于接收学生姓名。要求实现如下功能:输入专业名称,产生该专业学生的选课情况列表,其中包括专业、学号、姓名、课程号、课程名、成绩、学分等。并调用此存储过程,显示“计算机应用”专业学生的选课情况列表。
时间: 2024-12-18 19:29:29 浏览: 16
在MySQL中,你可以通过以下步骤来创建一个名为`proc_2`的存储过程,它接受一个参数`@spec`来获取学生姓名,并返回特定专业的选课信息:
首先,在`MyDB`数据库中,你需要使用SQL语法创建这个存储过程。以下是示例代码:
```sql
DELIMITER //
CREATE PROCEDURE proc_2(IN p_spec VARCHAR(50))
BEGIN
SELECT
students.profession AS '专业',
students.student_id AS '学号',
students.name AS '姓名',
courses.course_id AS '课程号',
courses.course_name AS '课程名',
grades.score AS '成绩',
courses.credits AS '学分'
FROM
students
JOIN
enrollments ON students.student_id = enrollments.student_id
JOIN
courses ON enrollments.course_id = courses.course_id
WHERE
students.profession = '计算机应用' AND students.name = p_spec;
END //
DELIMITER ;
```
这个存储过程通过`JOIN`操作连接了`students`表(包含学生信息)、`enrollments`表(记录学生选课信息)以及`courses`表(包含课程信息)。然后,使用`WHERE`子句筛选出指定专业和姓名的学生。
为了调用这个存储过程并显示"计算机应用"专业的学生选课情况,可以这样做:
```sql
CALL proc_2('需要输入的学生姓名');
```
将 `'需要输入的学生姓名'`替换为你实际想要查询的具体学生姓名。
阅读全文