学生(学号,年龄,性别,系名) 课程(课号,课名,学分,学时) 选课(学号,课号,成绩) 根据上面基本表的信息定义一个存储过程,完成下面功能: 入口参数:学号 1 显示学生的选课信息 2 如果学生没选课,让他选1号课,插入一条选课记录,成绩为0 3 如果学生所有课都不及格,删掉该学生记录
时间: 2023-12-15 20:03:32 浏览: 323
好的,根据您的要求,我设计了以下存储过程:
```
CREATE PROCEDURE show_student_course_info
@student_id INT
AS
BEGIN
-- 查询学生选课信息
SELECT c.course_name, c.course_credit, c.course_hour, s.grade
FROM 选课 s
JOIN 课程 c ON s.course_id = c.course_id
WHERE s.student_id = @student_id;
-- 如果学生没选课,让他选1号课,插入一条选课记录,成绩为0
IF NOT EXISTS (SELECT * FROM 选课 WHERE student_id = @student_id)
BEGIN
INSERT INTO 选课 (student_id, course_id, grade)
VALUES (@student_id, 1, 0);
PRINT '学生未选课,已为其插入一条选课记录,成绩为0';
END
-- 如果学生所有课都不及格,删掉该学生记录
IF NOT EXISTS (SELECT * FROM 选课 WHERE student_id = @student_id AND grade >= 60)
BEGIN
DELETE FROM 学生 WHERE student_id = @student_id;
PRINT '学生所有课都不及格,已删除该学生记录';
END
END
```
这个存储过程接收一个学号参数,会根据学号查询该学生的选课信息,并根据题目要求进行处理。如果学生没有选课,会插入一条选课记录,成绩为0;如果学生所有课都不及格,会删除该学生记录。
阅读全文