创建一个统计存储过程,过程名称为P_TJ。参数是学号,输出信息是指定学号的姓名、选课门数、平均分、总分、最高分、最低分。运行时若没有指定学号,则提示输入学号;若学号不存在则提示学号不存在;
时间: 2023-12-14 21:36:10 浏览: 88
tj.rar_visual c_数字字符个数
以下是一个可能的解决方案,使用MySQL语言编写:
```mysql
DELIMITER $$
CREATE PROCEDURE P_TJ(IN stu_id VARCHAR(20))
BEGIN
DECLARE stu_name VARCHAR(20);
DECLARE course_count INT;
DECLARE total_score FLOAT;
DECLARE avg_score FLOAT;
DECLARE max_score FLOAT;
DECLARE min_score FLOAT;
SELECT name INTO stu_name FROM student WHERE id = stu_id;
IF stu_name IS NULL THEN
SELECT '学号不存在' AS result;
LEAVE P_TJ;
END IF;
SELECT COUNT(*) INTO course_count FROM score WHERE student_id = stu_id;
SELECT SUM(score) INTO total_score FROM score WHERE student_id = stu_id;
SELECT MAX(score) INTO max_score FROM score WHERE student_id = stu_id;
SELECT MIN(score) INTO min_score FROM score WHERE student_id = stu_id;
SET avg_score = total_score / course_count;
SELECT stu_name, course_count, avg_score, total_score, max_score, min_score;
END $$
DELIMITER ;
```
这个存储过程接受一个学号作为输入参数,然后计算指定学号的姓名、选课门数、平均分、总分、最高分、最低分,并且输出这些信息。
如果输入的学号在数据库中不存在,则会输出一条错误提示。否则,将会返回统计信息。
可以使用以下代码来调用这个存储过程:
```mysql
CALL P_TJ('123456');
```
其中,'123456'应该替换成你要查询的学号。如果没有指定学号,那么可以使用以下代码来提示输入:
```mysql
SET @stu_id = NULL;
SELECT '请输入学号:';
SET @stu_id = '123456';
CALL P_TJ(@stu_id);
```
其中,@stu_id是一个MySQL变量,用于存储输入的学号。在上述代码中,我们首先将@stu_id设置为NULL,然后输出一个提示信息。接着,我们将输入的学号赋值给@stu_id,并且调用P_TJ存储过程进行统计。
阅读全文