MySql中一个简单的存储过程刷数据库数据
来源:互联网 发布:java uml建模工具 编辑:程序博客网 时间:2024/05/22 15:19
今天有朋友问我用orcale存储过程刷数据库数据怎么写的,他的要求是两张表,一张表里面字段为空的话,就从另外一张表中取数据更新这个表.orcale中写完之后,突然想到在mysql中怎么写呢,于是在网上找了一下资料.特意在此记录一下写法.(orcale的待会也补上!!!)
因为原来mysql中就有两张表,就懒得建表了.修改两张表的数据如下:
现在如果email表中的content为空的话,就用student表中的fenshu更新数据,代码如下:
create procedure my_procedure() -- 创建存储过程
begin -- 开始存储过程
declare my_id int; -- 自定义变量1
declare my_content varchar(50); -- 自定义变量2
DECLARE done INT DEFAULT FALSE; -- 自定义控制游标循环变量,默认false
DECLARE My_Cursor CURSOR FOR (select id,content from email where content is null or content = ''); -- 定义游标并输入结果集 结果集越少越好
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 绑定控制变量到游标,游标循环结束自动转true
OPEN My_Cursor; -- 打开游标
myLoop: LOOP -- 开始循环体,myLoop为自定义循环名,结束循环时用到
FETCH My_Cursor into my_id, my_content; -- 将游标当前读取行的数据顺序赋予自定义变量12
IF done THEN -- 判断是否继续循环
LEAVE myLoop; -- 结束循环
END IF;
-- 自己要做的事情,在 sql 中直接使用自定义变量即可
-- if(my_content is null or my_content = '') then 这样写的循环次数太多了
update email set content = (select fenshu from student where id = my_id) where id = my_id;
COMMIT; -- 提交事务
-- end if;
END LOOP myLoop; -- 结束自定义循环体
CLOSE My_Cursor; -- 关闭游标
END; -- 结束存储过程
-- sql 执行存储过程
call my_procedure();
-- select * from email
-- sql 删除存储过程
drop procedure my_procedure;
编译过后执行存储过程,结果如图:
可以清楚的发现email中的数据被更新了.
- MySql中一个简单的存储过程刷数据库数据
- Orcale中一个简单的存储过程刷数据库数据
- mysql 存储过程一个简单的循环遍历操作数据
- 一个简单的MYSQL存储过程
- mysql定义一个简单的存储过程
- 一个简单的存储过程数据分页
- 一个简单的存储过程数据分页
- 一个简单的存储过程数据分页
- 备份一个数据库中每个表的100条数据的存储过程
- MySQL数据库中如何新建一个带参数的存储过程procedure
- 一个简单的mysql存储过程的例子
- Mysql 一个简单的拆分表存储过程
- mysql定义一个简单的存储过程及测试
- 关于一个简单的mysql存储过程实例
- 一个循环插入数据到数据库的存储过程
- 数据存储过程之MySQL与ORACLE数据库的差别
- 数据存储过程之MySQL与ORACLE数据库的差别
- 一个简单的存储过程~
- 《统计学习方法》笔记——支持向量机(SVM)
- 立体声、双声道、单声道的区别
- faster rcnn训练过程出现loss=nan解决办法
- 数据结构C++栈
- socket理解(1)
- MySql中一个简单的存储过程刷数据库数据
- 整数划分
- JAVA上加密算法的实现用例
- kafka broker的常用配置
- 关于UIImage图片处理详细使用
- HttpClient 教程 (三)
- c++引用作为参数和返回值小结
- 170607 杂项-数据压缩和错误纠正
- Walk in Beijing