求mysql的游标用法详细说明,最好有例子!!

求mysql的游标用法详细说明,最好有例子!!,第1张

先声明一个游标语法

DECLARE v_1 VARCHAR(16)

DECLARE v_2 VARCHAR(16)

DECLARE c_XXX CURSOR FOR

SELECT c_1, c_2

FROM t_1

同时声明一个布尔型的变量FOUND,当循环的条件不成立时,结束循环用的。

DECLARE FOUND BOOLEAN DEFAULT TRUE

DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE

在使用游标的时候,要先打开游标,语法:OPEN c_XXX

使用的时候,要先打开游标,取出第一条数据,语法: FETCH c_XXX INTO v_1, v_2

然后才开始执行循环,语法:WHILE FOUND DO

执行需要执行的语句;

取下一条数据放到当前游标中,FETCH c_XXX INTO v_1, v_2

结束循环,语法:END WHILE

结束游标,语法:CLOSE c_cargo。有什么问题我们再沟通啊。不知道你具体要问题的是什么。

0 通过定义一个上下文管理者(即declare continue handler)来实现

必须在游标定义后定义,并通过使用一个辅助变量来进行判断。

1 示例如下:

delimiter $

drop procedure if exists curdemo $

CREATE PROCEDURE curdemo(pid int)

BEGIN

DECLARE notfound INT DEFAULT 0 #定义一个辅助变量用于判断

DECLARE a int #定义游标输出值赋予的变量

DECLARE cur1 CURSOR FOR SELECT id FROM test.t where id= pid #定义游标

DECLARE CONTINUE HANDLER FOR NOT FOUND SET notfound = 1 #定义declare continue handler,这个会根据上下文是否有结果判断是否执行SET notfound = 1

OPEN cur1

FETCH cur1 INTO a

if notfound = 1 then

select 'no result'

#写业务逻辑

ELSE

select concat('result:', a)

#写业务逻辑

end if

CLOSE cur1

END

$

delimiter

call curdemo(240)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7326086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存