本文主要是介绍mysql procedure 和 delimiter的简单明了的解释,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
将近完美的存储过程 不接受吐槽。
在最下面讲解一下 delimiter // 作用是什么?????
drop procedure if exists indicator_pro;
delimiter //
CREATE PROCEDURE indicator_pro()
BEGIN-- 创建接收游标数据的变量declare i int(11);declare gradeId int(11);declare n varchar(200);declare privilegeId int(11);-- 创建结束标志变量declare done int default false;-- 创建游标declare cur cursor for select id,`name`,gid from indicator;-- 指定游标循环结束时的返回值declare continue HANDLER for not found set done = true;-- 打开游标open cur;-- 开始循环游标里的数据read_loop:loop-- 根据游标当前指向的一条数据fetch cur into i,n,gradeId;-- 判断游标的循环是否结束if done thenleave read_loop; -- 跳出游标循环end if;-- 获取一条数据这里可以做任意你想做的操作,set n=concat(n,'特权');-- 特权id
-- INSERT INTO `privilege`(`name`, `picture_id_light`, `picture_id_dark`, `upatetime`, `type`) VALUES (n, NULL, NULL, SYSDATE(), 4);set privilegeId= (SELECT id FROM privilege ORDER BY id DESC LIMIT 1);-- 指标关联特权
-- INSERT INTO `invoice_privilege`(`invoice_id`, `p_id`) VALUES (i, privilegeId);-- 等级关联特权
-- INSERT INTO `grade_privilege`(`g_id`, `p_id`, `updatetime`) VALUES (gradeId, privilegeId, SYSDATE());SELECT i,n,gradeId,privilegeId;-- 结束游标循环end loop;-- 关闭游标close cur;
END//
delimiter ;
-- 调用存储过程
call indicator_pro();
drop procedure if exists indicator_pro;
-----------------------------------------------------纯手工摁的分割线---------------------------------------------------------------------------------------
delimiter是指定mysql的语句结尾符比如我们写一个sql语句会用 ";" 号结束当前语句 (默认就是;号)
1就是以;号结尾 2就是重新自定义了一下结尾符
1是用到结尾符的地方 2又给还原了回去。。。
完了 就这些 看到代码有问题的可以指点一二三 不接受吐槽。
这篇关于mysql procedure 和 delimiter的简单明了的解释的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!