sql存储过程实例--动态根据表数据复制一个表的数据到另一个表
动态根据表数据复制一个表的数据到另一个表
把track表的记录根据mac_id后两位数字,复制到对应track_?的表中
如:mac_id=12345678910,则后两位10对应表为track_10,就把此记录复制到track_10中
创建一个sub_track的存储过程实现:
--创建一个名为sub_track的存储过程 CREATEPROCEDUREsub_track() begin declareiint;--定义循环变量i set@imei=0;--定义imei最后两位 set@t_count=0;--定义表有多少条记录变量 SETi=0; SELECTCOUNT(*)INTO@t_countFROMtrack;--获取表的条数 whilei<=@t_countdo--循环 SELECTRIGHT(mac_id,2)INTO@imeiFROMtrackORDERBYgpstimeDESCLIMITi,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 FROMtrack ORDERBY gpstimeDESC LIMIT"; set@inset_sql=CONCAT("INSERTINTOtrack_",@imei,@sql1,i,",",1);--拼接完整的插入sql语句 PREPAREinsert_trackfrom@inset_sql;--预编译 EXECUTEinsert_track;--执行sql语句 seti=i+1; --结束循环 endwhile; commit; end --执行存储过程 CALLsub_track(); @flm
总结
以上所述是小编给大家介绍的sql存储过程实例--动态根据表数据复制一个表的数据到另一个表,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!