MySQL中的游标
DECLARE 游标名称 CURSOR FOR SQL语句;
2、打开游标
OPEN 游标名称;
FETCH 游标名称 INTO 变量名称[,变量名称];
CLOSE 游标名称;
CREATE PROCEDURE PROC1()BEGIN -- 定义两个存放结果的变量 DECLARE NAME VARCHAR(20); DECLARE ADDR VARCHAR(50); -- 声明游标 DECLARE MY CURSOR FOR SELECT 姓名,地址 FROM customers; -- 打开游标 OPEN MY; -- 获取结果 FETCH MY INTO NAME,ADDR; -- 这里是为了显示获取结果 SELECT NAME,ADDR; -- 关闭游标 CLOSE MY; END;CALL PROC1();CREATE PROCEDURE PROC2()BEGIN -- 定义两个存放结果的变量 DECLARE FLAG INT DEFAULT ; DECLARE NAME VARCHAR(20); DECLARE ADDR VARCHAR(50); -- 声明游标 DECLARE MY CURSOR FOR SELECT 姓名,地址 FROM customers;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET FLAG=1; -- 打开游标 OPEN MY; -- 循环体部分 L1:LOOP -- 获取结果 FETCH MY INTO NAME,ADDR; IF FLAG=1 THEN LEAVE L1; END IF; -- 这里是为了显示获取结果 INSERT INTO cus VALUES(NAME,ADDR); -- 关闭游标 END LOOP; -- 结束循环 CLOSE MY; END;然后我们执行这个存储过程,并查询cus表里的数据
CALL PROC2();SELECT * FROM cus;相关文章