opengauss创建一存储过程,根据学生学号,查询该学生所有选修课的成绩
时间: 2023-11-20 10:06:23 浏览: 107
学生选修课查询系统
好的,下面是一个示例存储过程,它可以根据学生学号查询该学生所有选修课的成绩:
```
CREATE OR REPLACE PROCEDURE get_student_scores(student_id INTEGER)
AS $$
DECLARE
course_id INTEGER;
course_name VARCHAR(100);
score INTEGER;
BEGIN
FOR course_id, course_name, score IN
SELECT c.id, c.name, s.score
FROM courses c
JOIN student_courses s ON c.id = s.course_id
WHERE s.student_id = student_id
LOOP
RAISE NOTICE 'Course % (%): %', course_name, course_id, score;
END LOOP;
END;
$$ LANGUAGE plpgsql;
```
在上面的示例中,我们创建了一个名为`get_student_scores`的存储过程,它接受一个学生学号作为参数。存储过程会查询`student_courses`表,找到所有该学生选修的课程,然后输出每门课程的名称、课程号和成绩。
要执行这个存储过程,只需要调用它的名称并传入学生学号:
```
CALL get_student_scores(123);
```
其中`123`是学生的学号。执行结果会在控制台中输出。如果你想将结果保存到文件或者其他地方,可以在存储过程中添加相关的逻辑。
阅读全文