MySQL 游标(CURSOR)
作者:互联网
游标(cursor)
游标是用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理。游标的使用包括游标的声明、OPEN、FETCH和CLOSE,其语法如下:
#声明游标
declare 游标名称 cursor for 查询语句;
#打开游标
open 游标名称;
#获取游标记录
fetch 游标名称 into 变量[,变量];
#关闭游标
close 游标名称;
案例:根据传入的参数usalary,来查询employees表中所有员工工资小于等于usalary的员工名和所在部门,并将用户的专业插入到所创建的一张新表(id,name,department_id)。
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);
标签:usalary,cursor,name,游标,DECLARE,CURSOR,MySQL,id 来源: https://blog.csdn.net/weixin_44300779/article/details/122807057