0
私はMYSQLでカーソルを使用しましたが、常にもう一度実行されています。このような コード:MYSQLでCURSORを使用してもう一度実行しないでください。
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および1以上3
を返しますが3 1より多くのを避けるための方法はありますか?
ありがとうございます!
は、おそらくフェッチチェックと関係のないすべてのコードをフェッチチェック後に移動する必要があります。 (換言すれば、 'END IF;'の後に 'select varid;'を移動してください) – Uueerdo
結果セット(または複数のセット)が戻ってきて何を達成しようとしていますか? – Drew