游标
在后面的剖析中可知 sql 的检索操作返回的数据简直都是以整个汇合的模式,也就是说 sql 长于将多条查问记录集中到一起并返回,假使当初须要一行行地解决查问的后果,这对于 sql 语句来说的确是个难题,好在存在一种称为游标的技术能够解决这个问题,所谓的游标就就是能够将检索进去的数据汇合保留在内存中而后顺次取出每条数据进行解决,这样就解决了 sql 语句无奈进行行记录解决的难题,游标的读取图解如下:
原表:
批量(游标)取值:
fetch 游标名称 into @变量 1,@变量 2,@变量 3。。。// 这里设置值跟查问语句的列一一对应。所以别写错地位了
mysql 存储过程应用表名作为参数 ———– 实现动静游标
视图局部。
例如上述,我写的是利用游标,清空对应的表,但会呈现表“不存在”的状况。
存储过程语句:
CREATE DEFINER=`root`@`%` PROCEDURE `sp_empty_table`()
BEGIN
declare flag int default 0;# 定义标识变量用于判断是否退出循环
declare tmp varchar(40);# 定义长期存储变量
declare cur cursor for select name from view_all_table where name not LIKE ‘sys_%’ ;# 申明游标
declare continue handler for not found set flag = 1; #异样解决并设置 flag=1
open cur; # 关上游标
while flag!=1 do
fetch cur into tmp ;# 从游标中取值并存放到 tmp 中
if flag !=1 then
SET @sqlcmd = concat(‘truncate table ‘, tmp);
prepare stmt from @sqlcmd;
execute stmt;
deallocate prepare stmt;
#truncate table tmp;
end if;
end while;
close cur; #敞开游标
END
本文来源于:宋文超 super,专属平台有 csdn、思否 (SegmentFault)、简书、开源中国 (oschina),转载请注明出处。