创建存储过程,统计指定学生学号的平均成绩和选课门数,将统计结果用输出参数传递给主程序,在SQL窗口中调用存储过程,输出过程的返回结果。
时间: 2024-05-02 20:17:09 浏览: 206
数据库管理与应用 8.2.3 创建带有输入、输出参数的存储过程.pdf
可以按照以下的 SQL 代码来创建存储过程:
```
CREATE PROCEDURE get_student_stats
@student_id INT,
@avg_score DECIMAL(5,2) OUTPUT,
@num_courses INT OUTPUT
AS
BEGIN
SELECT @avg_score = AVG(score), @num_courses = COUNT(*)
FROM scores
WHERE student_id = @student_id;
END
```
在这个存储过程中,我们定义了三个参数:@student_id 是输入参数,表示需要统计的学生学号;@avg_score 和 @num_courses 是输出参数,用于传递统计结果。
存储过程的主体部分使用了一条 SELECT 语句来计算平均成绩和选课门数,然后将结果存储到输出参数中。
接下来,在 SQL 窗口中调用存储过程,可以按照以下的代码:
```
DECLARE @student_id INT = 12345;
DECLARE @avg_score DECIMAL(5,2);
DECLARE @num_courses INT;
EXEC get_student_stats @student_id, @avg_score OUTPUT, @num_courses OUTPUT;
SELECT 'Average Score' AS label, @avg_score AS value
UNION ALL
SELECT 'Number of Courses' AS label, @num_courses AS value;
```
在这个代码中,我们首先声明了一个输入参数 @student_id,然后声明了两个输出参数 @avg_score 和 @num_courses。
接着,我们使用 EXEC 语句调用存储过程,并将输入参数和输出参数传递进去。
最后,我们使用 SELECT 语句输出存储过程的返回结果。在这个例子中,我们将平均成绩和选课门数分别输出为两行数据,其中 label 表示数据的类型,value 表示具体的数值。
阅读全文