【数据分析师_02_SQL+MySQL】027_MySQL的游标CURSOR

MySQL的游标CURSOR

1 什么是游标CURSOR

CURSOR 是在存储过程中,根据需要对数据集合进行前后浏览的一种应用。
CURSOR 程序间用来做数据交换的一个桥梁,比如在用 Python进行数据分析时,SQL传递给 Python数据就是通过 CURSOR实现。
在有 GUI或者 APP的情况下,肉眼即可见到数据,因此很少会用到 CURSOR。
但是在使用 PANDAS等程序批量处理的时候,CURSOR很重要。

2 游标的使用

2.1 创建游标

CREATE PROCEDURE processorders()
BEGIN
	DECLARE ordernumbers CURSOR		# 声明游标 DECLARE .. CURSOR FOR ..
	FOR
	select order_num from orders ;

	open ordernumbers ;		# 打开游标

	close ordernumbers ;	# 关闭游标

END ;

2.2 使用数据

CREATE PROCEDURE processorders2()
BEGIN
# ------------------------------------------------------------------- 
	DECLARE o int;							# 定义运输 CURSOR内容的容器
	DECLARE done boolean DEFAULT 0;									# 定义一个小旗子,作为开始、结束的信号
	DECLARE ordernumbers CURSOR
		FOR
		select order_num from orders;		# 定义游标
	DECLARE CONTINUE HANDLER FOR sqlstate '02000' SET done = 1;		# 定义当循环完所有结果时,举起小旗子
# ------------------------------------------------------------------- 
	OPEN ordernumbers;			# 打开游标

	REPEAT							# 循环开始
	FETCH ordernumbers INTO o;
		SELECT o;					# 正常情况下不会用到 SELECT,而一般搭配 Python或其他处理命令使用
	UNTIL done END REPEAT;			# 循环结束(和 Python中的 "for i in CURSOR" 本质是一样的)

	CLOSE ordernumbers;			# 关闭游标
# ------------------------------------------------------------------- 
END;

CALL processorders2()

CURSOR就像是一个满载的弹夹,而 o就像是一发发的子弹,而 REPEAT是撞针

上一篇:mysql繁体转简体函数 mysql简体转繁体函数


下一篇:mysql存储过程游标,计算仪器近期维保时间