MySQL 游标(CURSOR)
DROP PROCEDURE myp1;
DELIMITER $
CREATE PROCEDURE myp1(IN usalary DOUBLE)
BEGIN
#注意创建变量要在创建游标之前!!!
DECLARE empname VARCHAR(50);
DECLARE empdid INT;
#step1 声明游标,存储查询结果
DECLARE u_cursor CURSOR FOR
SELECT CONCAT(last_name,' ',first_name),department_id
FROM employees
WHERE salary<=usalary;
##step2 准备:创建表结构
DROP TABLE IF EXISTS emp_under_sal;
CREATE TABLE IF NOT EXISTS emp_under_sal(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(50),
department_id INT
);
#step3 开启游标
OPEN u_cursor;
#step4 获取游标中的记录
WHILE TRUE DO #目前这里还有一个bug,等学习了handler之后就可以解决
FETCH u_cursor INTO empname,empdid;
#step5 插入数据到新表中
INSERT INTO emp_under_sal VALUES(NULL,empname,empdid);
END WHILE;
#step6 关闭游标
CLOSE u_cursor;
END$
#调用存储过程
call myp1(10000);