如何避免在MySQL中使用CURSOR再次运行?

时间:2016-09-23 16:37:42

标签: mysql

我在MySQL中使用了一个游标,但它总是运行一次,然后我期待。 像这样的代码:

drop PROCEDURE if exists test_sp;

DELIMITER //

CREATE PROCEDURE test_sp()
BEGIN

DECLARE varid int;
DECLARE varExit_loop BOOLEAN;
DECLARE cursor_name CURSOR FOR
SELECT id 
FROM test;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET varExit_loop = TRUE;

drop table if exists test;

create table test
(id int);
insert into test
values
(1),
(2),
(3);

OPEN cursor_name;
test_loop: LOOP

    FETCH cursor_name INTO varid;
select varid;
    IF varExit_loop THEN
        CLOSE cursor_name;
        LEAVE test_loop;
    END IF;
END LOOP test_loop;

END; //

DELIMITER ;

运行SP后,它将返回4个结果,1,2,3和另外3个。

有没有办法避免再增加3个?

1 个答案:

答案 0 :(得分:1)

我搬家了

2

正好在

之下
IF varExit_loop THEN
    CLOSE cursor_name;
    LEAVE test_loop;
END IF;
END LOOP test_loop;

它工作正常。