mysql 存储过程复制A表数据到B表

create procedure sys_message_user_for_busbase()
begin
 -- 声明一个标志done, 用来判断游标是否遍历完成
 DECLARE done INT DEFAULT 0;
 -- 声明一个变量,用来存放从游标中提取的数据
 -- 特别注意这里的名字不能与由游标中使用的列明相同,否则得到的数据都是NULL
 DECLARE tid varchar(50) DEFAULT NULL;
 DECLARE tname varchar(50) DEFAULT NULL;
 DECLARE thead varchar(255) DEFAULT NULL;
 DECLARE tmobile varchar(255) DEFAULT NULL;
 -- 声明游标对应的 SQL 语句
 DECLARE cur CURSOR FOR select id,shop_name, mobile_phone,shop_logo from hx_busbase;
 -- 在游标循环到最后会将 done 设置为 1
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
 -- 执行查询
 open cur;
 -- 遍历游标每一行
 REPEAT
  -- 把一行的信息存放在对应的变量中
  FETCH cur INTO tid,tname, thead,tmobile;
  if not done then
   -- 这里就可以使用 tname, tpass 对应的信息了
		if (select count(1) from hx_message_user where uid=tid) = 0 THEN

			INSERT INTO hx_message_user(id,head,mobile,username,uid,remark) VALUES(tid,thead,tmobile,tname,tid,"busbase");

		end if;
   #select tid,tname, tpass,(select count(1) from btable where id=tid) as count;
  end if;
  UNTIL done END REPEAT;
 CLOSE cur;
end



#执行
call sys_message_user_for_busbase();

时间: 2024-11-10 00:57:52

mysql 存储过程复制A表数据到B表的相关文章

mysql存储过程之游标遍历数据表

原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹. 1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3 4 DECLARE CurrentLingQi INT; 5 6 DECLARE ShizuName VARCHAR(30); 7 /* 声明游标 */ 8 DECLARE rs CURSOR FOR SELECT

ORACLE+PYTHON实战:复制A表数据到B表

最近在学习python ,看到了pythod的oracle,不仅可以一次fetch多条,也可以一次insert多条,想写一个复制A表数据到B表的程序来看看实际效率能不能提高.写完发现,非常惊艳!效率提升了近一倍! 当然可能会认为这个没有实际意义,其实不然. 从A表复制数据到B表有很多中方法,一般直接insert即可: insert into tableA select * from tableB ; 但是当数据量非常大时,到达上亿水准的时候,这样做就很郁闷了,因为本身会跑很慢,又看不到进度,偶尔

hive-hbase-handler方式导入hive表数据到hbase表中

Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler.jar工具类 : hive-hbase-handler.jar在hive的lib包中而不是在hbase的lib中,hive0.6版本以后: 创建hive表的同时创建hbase表,删除 hive表的同时也会删除对应的hbase表. 参见官方文档:https://cwiki.apache.org/confluence/display/Hive/HBaseIntegr

Linux下mysql多表数据拆分单表

需求 写代码以前都复制粘贴,菜的一比,第一次碰见一个生活中的实际需求,哎,数据结构和流,线程还是得认真学啊 表结构如下 #!/bin/bash# ** 存储过程名称: ysp.ddl# ** 功能描述: # ** 创建者: wx# ** 创建日期: # ** 修改者: # ** 创建日期: # ** 修改内容: drop table if exists ods_payment_flow_sf7;create table ods_payment_flow_sf7(paymentid        

Excel表数据导入数据库表中

***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为一张临时表,在插入到正式表中.语句如下: --YK_TYPK插入数据 insert into YK_TYPK --插入'YK_TYPK(通用品库)'数据 select * from Sheet1$_TYPK_caoyao ---------------------------------------

MYSQL存储过程:批量更新数据

地区等级的信息储存在jsjh_district表. 要更新jsjh_goods_district表的district_level地区信息 DELIMITER $$ DROP PROCEDURE IF EXISTS update_district_level $$ CREATE PROCEDURE update_district_level() BEGIN DECLARE row_id INT;#定义变量ID DECLARE row_district_id INT;#定义变量地区ID DECLAR

SQL Server复制表结构和表数据生成新表的语句

参考:http://topic.csdn.net/t/20020621/09/820025.html SELECT   *   INTO   newTableName   FROM   oldTableName 此方法将把旧表的结构和数据同时copy生成新表,不过主键外键约束没有生成,需要手动设置.

MYSQL存储过程:批量更新数据2(产品品牌)

执行语句 DELIMITER $$ DROP PROCEDURE IF EXISTS jsjh_goods_property_value_update$$ CREATE PROCEDURE jsjh_goods_property_value_update() BEGIN DECLARE row_base_brand varchar(50);#定义变量品牌 DECLARE row_title varchar(50);#定义tlete DECLARE row_value varchar(50);#定

查询oracle 数据库中回滚段中一个时间点被修改的表数据并还原表中原来数据

利用下面的SQL就可以查处最近更改的数据. SQL> SELECT ID,NAME,VERSIONS_STARTTIME,VERSIONS_ENDTIME,VERSIONS_OPERATION FROM TEST VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE WHERE VERSIONS_STARTTIME IS NOT NULL ORDER BY VERSIONS_STARTTIME DESC; 通过以上小实验可以看出,VERSIONS_ST