概述
今天碰到一个需求,需要对数据库中的某一个字段按照一定规则更改数据,因为需求并不复杂 所以直接使用SQL进行解决,在此记录一下。
【存储过程】按照我的理解就相当于定义一个函数,然后再调用,当然也是可以传参数的,我这里因为没有这种需求,所以没有定义参数。
delimiter \
-- 这个操作可以让mysql一次性执行一个代码块 而不至于碰到‘;’就执行
drop procedure
if exists proc_while;
-- 如果存在名字为【proc_while】的存储过程 就先删除
CREATE PROCEDURE proc_while ()
-- 创建一个名字为【proc_while】的存储过程
BEGIN
declare my_date date;
-- 定义一个date类型的变量
declare need_date datetime; -- 定义一个datetime类型的变量
declare done int default false;
-- 定义一个boolean类型的变量
declare My_Cursor
cursor for SELECT DATE FROM em_unit_power_fc; -- 定义游标
declare continue HANDLER for not found set done = true; -- 定义循环结束标志
OPEN My_Cursor; -- 打开游标
--
开始循环游标里的数据
read_loop:loop
FETCH My_Cursor INTO my_date; -- 按照顺序从游标中取数,每次循环取一个
set need_date = DATE_ADD(my_date, INTERVAL 15 MINUTE); -- 利用Mysql的函数操作时间
UPDATE em_unit_power_fc set T_START_TIME = need_date WHERE DATE = my_date; -- 执行sql
--
判断游标的循环是否结束
if done then
leave read_loop;
-- 跳出游标循环
end if;
--
结束游标循环
end loop;
CLOSE My_Cursor;
-- 关闭游标
END\ -- 结束存储过程
delimiter ;
-- 取消 \ 执行操作符的设置
call proc_while(); -- 调用名字为【proc_while】的执行过程
最后
以上就是感性皮卡丘为你收集整理的【Mysql高级操作】SQL 存储过程、游标、循环的使用的全部内容,希望文章能够帮你解决【Mysql高级操作】SQL 存储过程、游标、循环的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复