创建名为s_info的存储过程,要求输入某学生的姓名时输出该学生所学课程的门数以及他的平均成绩。
时间: 2024-03-19 19:43:18 浏览: 36
好的,以下是符合您要求的存储过程代码:
```
CREATE PROCEDURE s_info
@name NVARCHAR(50)
AS
BEGIN
-- 获取该学生所选课程的门数
DECLARE @num_courses INT
SELECT @num_courses = COUNT(*) FROM course_selection WHERE student_name = @name
-- 获取该学生所有课程的成绩总和
DECLARE @sum_scores INT
SELECT @sum_scores = SUM(score) FROM course_selection WHERE student_name = @name
-- 计算平均成绩
DECLARE @avg_score FLOAT
SET @avg_score = CAST(@sum_scores AS FLOAT) / CAST(@num_courses AS FLOAT)
-- 输出结果
SELECT @name AS student_name, @num_courses AS num_courses, @avg_score AS avg_score
END
```
该存储过程接受一个学生的姓名作为输入参数,然后使用该姓名查询`course_selection`表,获取该学生所选课程的门数以及所有课程的成绩总和,最后计算平均成绩并将结果输出。请确保在使用该存储过程前已经创建了`course_selection`表,并且表中包含学生姓名和对应的课程成绩。
阅读全文