游标概述:
MySQL支持在存储程序(存储过程、存储函数)里定义(一个/多个)游标,游标具有以下属性:
- 只读:不可更新
- 不可滚动:只可以沿着一个方向遍历,不能跳过某些行。
## 关于游标申明、打开、使用、关闭的全过程实例
CREATE DATABASE test;
USE test;
CREATE TABLE t1(
id char(16),
data int
);
CREATE TABLE t2(
i int not null);
CREATE TABLE t1(
id char(16),
data int
);
CREATE PROCEDURE cur_demo()
BEGIN
DECLARE done INT DEFAULT FALES;
DECLARE a CHAR(16);
DECLARE b, c INT;
# 申明游标
DECLARE cur1 CURSOR FOR SELECT id, data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
# 申明条件
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
# 打开游标
OPEN cur1;
OPEN cur2;
# 使用游标
read_loop: LOOP
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF done THEN
LEAVE read_loop;
END IF;
IF b>c THEN