include/master-slave.inc [connection master] DROP PROCEDURE IF EXISTS test.p1; DROP TABLE IF EXISTS test.t1; DROP TABLE IF EXISTS test.t2; CREATE TABLE test.t1 (a INT, PRIMARY KEY(a)); INSERT INTO test.t1 VALUES (1),(2),(3),(4); CREATE TABLE test.t2 (a INT, PRIMARY KEY(a)); CREATE PROCEDURE test.p1 (arg1 CHAR(1)) BEGIN DECLARE b, c INT; IF arg1 = 'a' THEN BEGIN DECLARE cur1 CURSOR FOR SELECT A FROM test.t1 WHERE a % 2; DECLARE continue handler for not found set b = 1; SET b = 0; OPEN cur1; c1_repeat: REPEAT FETCH cur1 INTO c; IF (b = 1) THEN LEAVE c1_repeat; END IF; INSERT INTO test.t2 VALUES (c); UNTIL b = 1 END REPEAT; CLOSE cur1; END; END IF; IF arg1 = 'b' THEN BEGIN DECLARE cur2 CURSOR FOR SELECT a FROM test.t1 WHERE NOT a % 2; DECLARE continue handler for not found set b = 1; SET b = 0; OPEN cur2; c2_repeat: REPEAT FETCH cur2 INTO c; IF (b = 1) THEN LEAVE c2_repeat; END IF; INSERT INTO test.t2 VALUES (c); UNTIL b = 1 END REPEAT; CLOSE cur2; END; END IF; END| CALL test.p1('a'); SELECT * FROM test.t2 ORDER BY a; a 1 3 SELECT * FROM test.t2 ORDER BY a; a 1 3 truncate test.t2; call test.p1('b'); select * from test.t2 ORDER BY a; a 2 4 SELECT * FROM test.t2 ORDER BY a; a 2 4 truncate test.t2; SELECT * FROM test.t2 ORDER BY a; a SELECT * FROM test.t2 ORDER BY a; a DROP PROCEDURE test.p1; DROP TABLE test.t1; DROP TABLE test.t2; include/rpl_end.inc