mysql存储过程中光标所指向的记录在打开光标之前可以改变吗

mysql存储过程中光标所指向的记录在打开光标之前可以改变吗,第1张

本篇主要参考mysql手册

光标必须在声明处理程序之前被声明,并且变量和条件必须在声明光标或处理程序之前被声明。

声明光标

DECLARE cursor_name CURSOR FOR select_statement这个语句声明一个光标。也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名字。

SELECT语句不能有INTO子句。

open光标

OPEN cursor_name

这个语句打开先前声明的光标。

fetch光标

FETCH cursor_name INTO var_name [, var_name] ...

这个语句用指定的打开光标读取下一行(如果有下一行的话),并且前进光标指针。

close光标

CLOSE cursor_name

这个语句关闭先前打开的光标。

如果未被明确地关闭,光标在它被声明的复合语句的末尾被关闭。

示例:

Sql代码 收藏代码

CREATE PROCEDURE curdemo()

BEGIN

DECLARE done INT DEFAULT 0

DECLARE a CHAR(16)

DECLARE b,c INT

DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1DECLARE cur2 CURSOR FOR SELECT i FROM test.t2DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1OPEN cur1

OPEN cur2

REPEAT

FETCH cur1 INTO a, b

FETCH cur2 INTO c

IF NOT done THEN

IF b <c THEN

INSERT INTO test.t3 VALUES (a,b)

ELSE

INSERT INTO test.t3 VALUES (a,c)

END IF

END IF

UNTIL done END REPEAT

CLOSE cur1

CLOSE cur2

END

mysql光标变成横线解决方法为按下insert键。根据查询相关公开信息,在MySQL中,使用关键字FETCH来使用光标,基本语法如下:光标的声明、open、fetch、close。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存