我想把一个数据导入另外一个数据表,所以我用MySQL在上面实现存储过程.发现和SQL SERVER还是有区别的.具体写法如下:
drop procedure IF EXISTS test_proc;
delimiter //
create procedure test_proc()
begin
-- 声明一个标志done, 用来判断游标是否遍历完成
DECLARE done INT DEFAULT 0;
declare _col1 varchar(500) DEFAULT NULL;
declare _col2 varchar(500) DEFAULT NULL;
declare _col3 varchar(500) DEFAULT NULL;
declare _col4 varchar(500) DEFAULT NULL;
declare _col5 varchar(500) DEFAULT NULL;
-- 声明游标对应的 SQL 语句
DECLARE cur CURSOR FOR
select `COL 5`,`COL 4`,`COL 2`,`COL 1`,`COL 3` from `table 8`;
-- 在游标循环到最后会将 done 设置为 1
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
-- 执行查询
open cur;
-- 遍历游标每一行
REPEAT
-- 把一行的信息存放在对应的变量中
FETCH cur into _col5, _col4, _col2,_col1,_col3; -- 取数据
if not done then
insert into `aunt_shop` (`cShopAddr`,`cShopContact`,`cShopDetail`,`cShopName`,`cShopPhone`)values ( _col5,_col4,_col2,_col1,_col3);
end if;
UNTIL done END REPEAT;
CLOSE cur;
end
//
delimiter ;
-- 执行存储过程
call test_proc();