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);

条件处理程序handler

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值