一、游标概念:
1.1 声明游标
DECLARE cursor_name CURSOR FOR select_statement;
1.2 开启游标
OPEN cursor_name;
1.3 使用游标
FETCH cursor_name INTO var_name [,var_name]...
1.4 关闭游标
CLOSE cursor_name;
二、练习
创建用表,任意插入数据
CREATE TABLE users(
ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
user_name VARCHAR(60),
user_pass VARCHAR(64),
PRIMARY KEY (ID));
创建存储过程,声明游标cur1将user_pass 全部换成345
DELIMITER $$
CREATE PROCEDURE change_pass() # 创建存储过程
BEGIN
DECLARE result VARCHAR(100);
DECLARE NO INT ; # 位置变量
DECLARE cur1 CURSOR FOR SELECT user_pass FROM users; # 要干什么
DECLARE CONTINUE HANDLER FOR NOT FOUND SET NO=1; # 当读到数据的最后一条时,设置no变量为1
SET NO=0; # 初始变量为0
OPEN cur1; # 打开游标
WHILE NO=0 DO # 循环判断是否为0
FETCH cur1 INTO result; # 读取游标数据放入result
UPDATE users SET user_pass='345' WHERE user_pass=result;
END WHILE;
CLOSE cur1;
END $$
DELIMITER ;
调用存储过程:
call change_pass;