记录mysql存储过程中循环临时表
⼩笨参考了:的。
完整例⼦贴出来:
CREATE DEFINER=`root`@`%` PROCEDURE `你的存储过程名称`()
uc版本java下载BEGIN
#创建临时表,并且读取数据表数据直接插⼊到临时表⾥,省去了创建临时表,声明字段步骤了。
CREATE TEMPORARY TABLE
IF
NOT EXISTS `你的临时表名` SELECT column1,column2,,,, FROM `你的数据表名`;
BEGIN
#根据你的业务逻辑,声明你需要的⼀些变量
DECLARE startTime DATETIME DEFAULT NOW();#etc
用c语言100以内所有素数的和DECLARE endTime DATETIME DEFAULT NOW();#etc
DECLARE c_column1 varchar(50);
DECLARE c_column2 varchar(100);
#重点来了。
DECLARE done INT DEFAULT0;#定义⼀个标志,⾃⼰约定⼀个condition 条件,满⾜条件跳出循环,
#定义游标
#游标(Cursor)是⽤于查看或者处理结果集中的数据的⼀种⽅法。游标提供了在结果集中⼀次⼀⾏或者多⾏前进或向后浏览数据的能⼒。
DECLARE cr CURSOR for SELECT column1,column2 FROM `你的临时表名`;#循环临时表数据,
# DECLARE CONTINUE HANDLER FOR NOT found SET done =1;#意思就是游标读取到结果集最后没有数据了,可以⾃⼰定义处理⽅式,这⾥就是把上⾯定义的标志 done 变量设置为 1 代表没有数据
了OPEN cr;
myLoop:LOOP
FETCH cr INTO c_column,c_column2; #这句很重要:读取游标中的数据(每次遍历临时表中的数据得来了)赋值给声明的你需要的变量
IF done =1THEN #当⾃定义的标志变量 done 为 1 满⾜条件即代表没有数据了就跳出循环了,相当于 for循环中的 break;
LEAVE myLoop;jspp聊天软件是个什么套路
END IF;
parsefloat保留2位小数fwtools#逻辑START
#在这⾥你可以写⾃⼰的业务sql,操作变量的值 c_column1 c_column2
#逻辑END END LOOP myLoop;
-- 关闭游标
close cr;
End;mysql查看所有存储过程
DROP TEMPORARY TABLE IF EXISTS `你的临时表`;
End
保持学习,保持记录~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论