mysql创建一个存储函数avg_func,通过游标统计指定课程的平均分。
时间: 2024-03-21 07:39:50 浏览: 85
Mysql存储过程和函数
好的,以下是创建存储函数 `avg_func` 的 SQL 语句:
```sql
DELIMITER $$
CREATE FUNCTION avg_func(course_id INT) RETURNS DECIMAL(5,2)
BEGIN
DECLARE total_score DECIMAL(5,2);
DECLARE total_count INT;
DECLARE avg_score DECIMAL(5,2);
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT score FROM score WHERE course_id = course_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SET total_score = 0;
SET total_count = 0;
OPEN cur;
read_loop: LOOP
FETCH cur INTO score;
IF done THEN
LEAVE read_loop;
END IF;
SET total_score = total_score + score;
SET total_count = total_count + 1;
END LOOP;
CLOSE cur;
SET avg_score = total_score / total_count;
RETURN avg_score;
END$$
DELIMITER ;
```
该函数接受一个 `course_id` 参数,通过游标遍历 `score` 表中指定课程的所有成绩,并统计平均分。最后返回计算得出的平均分。
使用方法如下:
```sql
SELECT avg_func(1); -- 统计课程ID为1的平均分
```
阅读全文