MYSQL游标的简单案例
时间: 2023-09-12 14:10:09 浏览: 155
以下是一个简单的 MYSQL 游标案例:
假设有一个存储了学生信息的表格 `students`,包含了学生的姓名和分数。现在需要计算每个学生的总分数并将结果保存到另一个表格 `results` 中。可以使用游标来遍历 `students` 表格中的每个学生,并将每个学生的分数相加。
首先,创建 `results` 表格:
```
CREATE TABLE results (
id INT PRIMARY KEY,
name VARCHAR(50),
total_score INT
);
```
接下来,编写存储过程,使用游标遍历 `students` 表格并计算每个学生的总分数:
```
DELIMITER //
CREATE PROCEDURE calculate_scores()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE student_name VARCHAR(50);
DECLARE score INT;
DECLARE total INT DEFAULT 0;
DECLARE cur CURSOR FOR SELECT name, score FROM students;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO student_name, score;
IF done THEN
LEAVE read_loop;
END IF;
SET total = total + score;
END LOOP;
CLOSE cur;
INSERT INTO results (id, name, total_score) VALUES (1, 'All Students', total);
END //
DELIMITER ;
```
在上面的存储过程中,首先声明了一个名为 `cur` 的游标,用于遍历 `students` 表格。然后,使用 `FETCH` 命令从游标中获取每个学生的姓名和分数,并将分数累加到变量 `total` 中。最后,将 `total` 值插入到 `results` 表格中。
可以通过以下命令调用存储过程:
```
CALL calculate_scores();
```
执行完毕后,`results` 表格中应该会有一条记录,表示所有学生的总分数。
阅读全文