游标在存储过程中相当于一个循环
delimiter $$
drop procedure if exists 存储过程名$$
create procedure 存储过程名(可以带参数)
declare 变量 类型 ;
declare 游标名 cursor for select * from 表名;(这里的意思是在查出来的数据上定义一个游标,用来循环出数据)
/* mysql 不知道为什么用异常加入判断
* 此请参考官方文档 20.2.11. 光标 光标
* 这把 游标 异常后 捕捉
* 并设置 循环使用 变量 tmpname 为 null 跳出循环。
*/
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tname = null;
open 游标名
fetch cu into tname;游标向下一步
/*循环游标*/
while(tname is not null) do
set tname=concat(tname,";");
set allName=concat(allName,tname);
fetch cu into tname;
/*循环结束*/
end while;
/*关闭游标*/
close cu;
select allName;
END$$
DELIMITER ;
call 存储过程名
delimiter $$
drop procedure if exists 存储过程名$$
create procedure 存储过程名(可以带参数)
declare 变量 类型 ;
declare 游标名 cursor for select * from 表名;(这里的意思是在查出来的数据上定义一个游标,用来循环出数据)
/* mysql 不知道为什么用异常加入判断
* 此请参考官方文档 20.2.11. 光标 光标
* 这把 游标 异常后 捕捉
* 并设置 循环使用 变量 tmpname 为 null 跳出循环。
*/
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tname = null;
open 游标名
fetch cu into tname;游标向下一步
/*循环游标*/
while(tname is not null) do
set tname=concat(tname,";");
set allName=concat(allName,tname);
fetch cu into tname;
/*循环结束*/
end while;
/*关闭游标*/
close cu;
select allName;
END$$
DELIMITER ;
call 存储过程名