光标必须在声明处理程序之前被声明,并且变量和条件必须在声明光标或处理程序之前被声明。
声明光标
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。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)