mysql游标

1.定义

1)游标是一组类似于数组的具有排序的结果集。

2)在mysql中游标只能用于存储过程和函数

3)mysql的游标是向前只读的,也就是说,你只能顺序地从开始往后读取结果集,不能从后往前,也不能直接跳到中间的记录。

2.声明游标

DECLARE [name] CURSOR FOR [select sql];

3.具体实例

CREATE DEFINER=`root`@`localhost` PROCEDURE `p_02`(IN `id` int)
BEGIN
	#游标
	# 1)游标是一组类似于数组的具有排序的结果集。
	# 2)在mysql中游标只能用于存储过程和函数。
    #3)mysql的游标是向前只读的,也就是说,你只能顺序地从开始往后读取结果集,不能从后往前,也不能直接跳到中间的记录。
	declare p_id int;
	declare p_name varchar(55);
	#声明变量控制遍历游标的循环终止
	declare curstatus int default 1;
	#声明游标,必须在所有执行sql(select/insert/update/delete)之前声明游标
	declare list cursor for select id,stu_name from stu_info
	  where cla_id=id;
  
    # CONTINUE HANDLER 声明handler(处理器),handler会自动地向下读取游标的一行数据
	# 当handler读不到数据时(not found)表明已经读完了游标的数据
	# 此时设置curStatus = 0
	declare continue handler for sqlstate '02000' set curstatus=0;
	#开启游标
	open list;
	# 向下读取一行数据,并将这行数据赋值给与其字段对应的变量
	  fetch list into p_id,p_name;
		while curstatus=1 do
			# 执行sql语句
			# select/insert/update/delete...
		insert into person_info set name=p_name;
		fetch list into p_id,p_name;
		end while;
		# 关闭游标
	CLOSE list;

END

调用

 call p_02(2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值