mysql存储过程好几年没用了,最近看文档,就写了个小例子实践下,增强记忆。
例子主要实现的是从一张表更新记录到另外一张表去。
CREATE TABLE `user_info` (
`user_id` int(11) default NULL,
`user_name` varchar(20) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `tmp_user` (
`tmp_user_id` int(11) default NULL,
`tmp_name` varchar(20) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
insert into `user_info` (`user_id`, `user_name`) values('20','aa');
insert into `user_info` (`user_id`, `user_name`) values('21','bb');
insert into `user_info` (`user_id`, `user_name`) values('22','cc');
insert into `user_info` (`user_id`, `user_name`) values('23','dd');
insert into `tmp_user` (`tmp_user_id`, `tmp_name`) values('20','');
insert into `tmp_user` (`tmp_user_id`, `tmp_name`) values('22','');
insert into `tmp_user` (`tmp_user_id`, `tmp_name`) values('23','');
下面创建存储过程
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`pro_user`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_user`()
BEGIN
DECLARE total INT DEFAULT 0;
DECLARE tmpCount INT DEFAULT 0;
DECLARE userId INT DEFAULT 0;
DECLARE userName varchar(50);
DECLARE cur1 CURSOR FOR SELECT user_id,user_name FROM user_info;
SELECT count(*) INTO total FROM user_info;
OPEN cur1;
REPEAT
FETCH cur1 INTO userId, userName;
SET tmpCount = tmpCount + 1;
UPDATE tmp_user set tmp_name=userName where tmp_user_id=userId;
UNTIL tmpCount >=total END REPEAT;
CLOSE cur1;
select total ;
END$$
DELIMITER ;
调用CALL pro_user();
查看tmp_user,发现记录已经同步过去了。
分享到:
相关推荐
个人看完视频总结的游标小结,如有差错请多指教
Mysql游标(循环操作)
MySql存储过程,游标的使用方法,速度极快!
mysql游标使用的整个过程为: 1.创建游标 代码如下:DECLARE calc_bonus CURSOR FOR SELECT id, salary, commission FROM employees; 2.打开游标 代码如下:OPEN calc_bonus; 3.使用游标 代码如下:FETCH calc_bonus ...
计算机后端-PHP视频教程. php与mysql加强- 04. php加强42-数组游标操作.wmv
02.Linux上安装MySQL 03.启动及登录MySQL 04.索引 - 概述 05.索引 - 优势和劣势 06.索引 - 数据结构 07.索引 - 数据结构 - BTREE 08.索引 - 数据结构 - B+TREE 09.索引 - 索引分类 10.索引 - 索引语法 11.索引 - ...
带游标的mysql存储过程例子。
Mysql存储过程游标触发器
mysql动态游标示例,通过准备语句、视图和静态游标实现,大家参考使用吧
关于游标的用法Mysql现在提供的还很特别,虽然使用起来没有PL/SQL那么顺手,不过使用上大致上还是一样, 定义游标 declare fetchSeqCursor cursor for select seqname, value from sys_sequence; 使用游标 open ...
Mysql从5.0开始支持存储过程和trigger,游标在递归树结构中非常好用
NULL 博文链接:https://fangyong2006.iteye.com/blog/768291
mysql声明游标的方法: 1、声明变量和游标 declare result varchar(3000); declare flag1 varchar(100); DECLARE done INT DEFAULT FALSE; declare cur1 CURSOR FOR SELECT flag from bmlx; 2、变量赋值 DECLARE ...
mysql函数、存储过程、触发器、游标
主要介绍了MySQL使用游标批量进行表操作,包括批量添加索引、批量添加字段等,感兴趣的小伙伴们可以参考一下
[mysql游标的用法及作用] 例子: 当前有三张表A、B、C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中; 常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有...
本文实例讲述了mysql游标的原理与用法。分享给大家供大家参考,具体如下: 本文内容: 什么是游标 创建游标 使用游标 首发日期:2018-04-18 什么是游标: 如果你前面看过mysql函数,会发现无法使用返回多行...