概述
存储过程
本人也是第一次使用存储过程,中间遇到了很多坑,在此记录一下,希望能帮助使用的人少踩点坑。。
先说一下我使用存储过程的需要,其实需求很简单就是把一个表中的数据导入一个新的表中,并且删除原有表中的数据,说白了就是一个数据的备份
我是使用navicat进行编辑的,我认为用好用的工具就要使用,能省事就省事,毕竟人生时间不多,不要浪费时间在那些无用的事情上。
CREATE DEFINER=
root@
localhostPROCEDURE
user_logs`()
begin
– 声明一个标志done, 用来判断游标是否遍历完成
DECLARE done INT DEFAULT FALSE;
– 声明一个变量,用来存放从游标中提取的数据
– 特别注意这里的名字不能与由游标中使用的列明相同,否则得到的数据都是NULL
DECLARE lid varchar(255) DEFAULT NULL;
DECLARE lname varchar(255) DEFAULT NULL;
DECLARE lpid varchar(255) DEFAULT NULL;
DECLARE lzindex varchar(255) DEFAULT NULL;
DECLARE listype varchar(50) DEFAULT NULL;
DECLARE ldescpt varchar(50) DEFAULT null;
DECLARE lcode varchar(50) DEFAULT NULL;
DECLARE licon varchar(50) DEFAULT NULL;
DECLARE lpage varchar(50) DEFAULT NULL;
DECLARE linsert_time varchar(50) DEFAULT NULL;
DECLARE lupdate_time varchar(50) DEFAULT NULL;
– 声明游标对应的 SQL 语句
DECLARE cur CURSOR FOR select id,name, pid,zindex,istype,descpt,code,icon,page,insert_time,update_time from permission;
– 在游标循环到最后会将 done 设置为 TRUE
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
– 执行查询
open cur;
– 遍历游标每一行
read_loop: LOOP
– 提取游标里的数据
FETCH cur INTO lid,lname,lpid,lzindex,listype,ldescpt,lcode,licon,lpage,linsert_time,lupdate_time ;
– 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
INSERT INTO permissions(id,name, pid,zindex,istype,descpt,code,icon,page,insert_time,update_time) VALUES( lid,lname,lpid,lzindex,listype,ldescpt,lcode,licon,lpage,linsert_time,lupdate_time);
delete from permission;
END LOOP;
– 关闭游标
CLOSE cur;
end
上图:
以上就是我这次使用的的全过程,能帮到你就点点赞,不能帮到你也别踩,小心我手中30米长的大刀,分分钟秒杀你。。。。。。。。。。。。。。
最后
以上就是认真猫咪为你收集整理的mysql使用存储过程将一个表中的数据导入另一个表的全部内容,希望文章能够帮你解决mysql使用存储过程将一个表中的数据导入另一个表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复