SQLserver学生(学号,年龄,性别,系名) 课程(课号,课名,学分,学时) 选课(学号,课号,成绩) 根据上面基本表的信息定义一个存储过程,完成下面功能: 入口参数:学号 1 显示学生的选课信息 2 如果学生没选课,让他选1号课,插入一条选课记录,成绩为0 3 如果学生所有课都不及格,删掉该学生记录
时间: 2024-01-03 10:03:35 浏览: 68
好的,以下是根据您提供的信息编写的存储过程:
```
CREATE PROCEDURE proc_student_course
@stu_id INT
AS
BEGIN
-- 检查该学生是否存在选课记录
IF NOT EXISTS (SELECT * FROM 选课 WHERE 学号 = @stu_id)
BEGIN
-- 如果学生没选课,让他选1号课,插入一条选课记录,成绩为0
INSERT INTO 选课 (学号, 课号, 成绩) VALUES (@stu_id, 1, 0)
END
ELSE
BEGIN
-- 显示学生的选课信息
SELECT 学生.学号, 学生.年龄, 学生.性别, 学生.系名, 课程.课号, 课程.课名, 课程.学分, 课程.学时, 选课.成绩
FROM 学生
INNER JOIN 选课 ON 学生.学号 = 选课.学号
INNER JOIN 课程 ON 选课.课号 = 课程.课号
WHERE 学生.学号 = @stu_id
-- 如果学生所有课都不及格,删掉该学生记录
IF NOT EXISTS (SELECT * FROM 选课 WHERE 学号 = @stu_id AND 成绩 >= 60)
BEGIN
DELETE FROM 学生 WHERE 学号 = @stu_id
END
END
END
```
以上存储过程接受一个入口参数 `@stu_id`,根据该参数的值完成相应的操作:
- 如果该学生没有选课,则插入一条选课记录,课号为1,成绩为0。
- 如果该学生已经选课,则查询该学生的选课信息并返回。
- 如果该学生所有课都不及格,则删除该学生的记录。
阅读全文