MySQL 游标(CURSOR)

时间:2025-02-28 19:24:35
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);