当前位置: 移动技术网 > IT编程>数据库>MSSQL > sql存储过程实例--动态根据表数据复制一个表的数据到另一个表

sql存储过程实例--动态根据表数据复制一个表的数据到另一个表

2017年11月02日  | 移动技术网IT编程  | 我要评论

沙冰机cnxiangyi,甘肃农业大学怎么样,切尔西队歌歌词

动态根据表数据复制一个表的数据到另一个表

把track表的记录 根据mac_id后两位数字,复制到对应track_? 的表中

如:mac_id=12345678910,则后两位10 对应表为track_10,就把此记录复制到track_10中

创建一个 sub_track的存储过程实现:

-- 创建一个 名为sub_track的存储过程
create procedure sub_track()
begin
  declare i int;  -- 定义 循环变量i
  set @imei =0;  -- 定义imei最后两位
  set @t_count=0; -- 定义 表有多少条记录变量
  set i=0;
  select count(*)into @t_count from track;        -- 获取表的条数
while i <= @t_count do                   -- 循环
 select right(mac_id,2) into @imei from track order by gpstime desc limit i, 1;  -- 获取 imei 最后两位 
  set @imei =convert(@imei,signed);                       -- 转为数字
  -- sql 语句
  set @sql1=" (
               mac_id,mac_type,channel,type,x,y,gpstime,bvalid,speed,dir,s1,s2,s3,s4,ins_date,imagefile,battery
             ) 
            select 
               mac_id,mac_type,channel,type,x,y,gpstime,bvalid,speed,dir,s1,s2,s3,s4,ins_date,imagefile,battery
            from track 
            order by
              gpstime desc
            limit ";
  set @inset_sql=concat("insert into track_",@imei,@sql1,i,",",1);    -- 拼接完整的插入 sql语句
  prepare insert_track from @inset_sql;                  -- 预编译
  execute insert_track;                          -- 执行sql语句
  set i=i+1;
-- 结束循环
end while;
  commit;
end
-- 执行存储过程
call sub_track();
@flm

总结

以上所述是小编给大家介绍的sql存储过程实例--动态根据表数据复制一个表的数据到另一个表,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网