mysql用存储过程循环截取用户信息并插入到目标表对应
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-18 15:54:37 浏览: 评论:0
mysql用存储过程循环截取用户信息并插入到目标表对应的字段实例
以下实实例实现的功能是mysql创建一个存储过程,然后循环环截取用户信息并插入到目标表对应的字段,这个功能对网站改版用处比较大.
操作环境:有表game_list,字段:uid,score1,score2,seat_id,last_update;
传入参数为i_player_detail,传入的值为多个用户的id、之前分数、之后分数、座位号,每个用户的数据用分号(;)隔开;
操作目的:将各个用户对应的属性插入到目标表对应的字段中,last_update为数据更新日期;
传入参数i_player_detail,里面存放多个用户的信息,每个用户的一组数据用分号隔开,每个用户的信息多个,比如.
“用户id,score,desk,seat;
用户id,score,desk,seat;……”
代码如下:
- -- 使用存储过程
- delimiter $$
- use `log_pdk`$$
- drop procedure if exists `game_c`$$
- create procedure `game_c` (in i_player_detail varchar(500))
- SQL SECURITY INVOKER
- BEGIN
- DROP TABLE IF EXISTS `temp_list`;
- --创建临时表,将截取的数据先插入到临时表
- CREATE TEMPORARY TABLE `temp_list`(
- `uid` INT(10) UNSIGNED NOT NULL,
- `score1` INT(10) UNSIGNED NOT NULL,
- `score2` INT(10) UNSIGNED NOT NULL,
- `seat_id` TINYINT(3) UNSIGNED NOT NULL
- );
- -- declare str varchar(500);-- 用来拼接sql动态语句
- declare m_detail varchar(500);
- declare m_num tinyint;
- -- 当传入的用户信息字符串中含有分号';',进行截取
- set m_num = position(';' in str) -- 不存在分号的时候,返回0
- while m_num >= 1 do
- begin
- set @str = 'insert into temp_list values (' + substring(m_detail,1,m_num-1)+')' -- 截取第一个用户的信息(第一个分号前面的字符),插入到临时表
- prepare statement1 from @str;
- execute statement1;
- deallocate prepare statement1;
- set m_detail = substring(m_detail,m_num+1); -- 定义除去第一个用户和分号那部分的字符串
- set set m_num = position(';' in str);
- end while; --phpfensi.com
- -- 从临时表抽出所有字段,添加时间字段,插入到表game_list
- INSERT INTO `game_list`(`uid`,`score1`,`score2`,`seat_id`, `last_update`)
- SELECT `uid`, `score1`, `score2`, `seat_id`, current_date()
- FROM `temp_list`;
- end$$
- delimiter;
Tags: mysql存储过程 mysql插入目标表
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)