– 需求:想把t_hj_test表的数据更新到student表数据,已有就更新没有就插入
sno 学号
– sname 姓名
– ssex 性别
– 存储过程存在就删掉
DROP PROCEDURE IF EXISTS set_value;
DELIMITER //
CREATE PROCEDURE set_value()
BEGIN
– 定义变量
DECLARE emp_sno VARCHAR(25) DEFAULT ‘0’;
DECLARE emp_sname VARCHAR(25) DEFAULT ‘0’;
DECLARE emp_ssex VARCHAR(25) DEFAULT ‘0’;
– //该变量用于标识是否还有数据需遍历
DECLARE flag INT DEFAULT 0;
– 定义游标
DECLARE emp_cursor CURSOR FOR select sno,sname,ssex from t_hj_test;
– //查询是否有下一个数据,没有将标识设为1配合flag变量 ,相当于hasNext
DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1;
– 打开游标
open emp_cursor;
– 使用while循环遍历游标
while flag != 1 Do
– 使用 fetch 游标名 into 变量1,变量2,变量3 把每行的数据赋予变量
fetch emp_cursor into emp_sno,emp_sname,emp_ssex;
– 使用 replace into 目标表(目标字段1,…,…) values(变量1,…,…)
replace into student(sno,sname,ssex) values(emp_sno,emp_sname,emp_ssex);
END WHILE;
– 关闭游标
close emp_cursor;
END //
DELIMITER ;
– 调用存储过程
CALL set_value( );