1DROP TABLE IF EXISTS t1,t2,t3; 2DROP PROCEDURE IF EXISTS sp1; 3CREATE TABLE t1 (id INTEGER NOT NULL PRIMARY KEY, data INTEGER NULL); 4CREATE TABLE t2 (i INTEGER NULL); 5CREATE TABLE t3 (id INTEGER NOT NULL PRIMARY KEY, data INTEGER NULL); 6INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5); 7INSERT INTO t2 VALUES(1),(2),(3); 8CREATE PROCEDURE sp1() 9BEGIN 10DECLARE done INT DEFAULT 0; 11DECLARE a CHAR(16); 12DECLARE b,c INT; 13DECLARE cur1 CURSOR FOR SELECT id,data FROM t1; 14DECLARE cur2 CURSOR FOR SELECT i FROM t2; 15DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; 16OPEN cur1; 17OPEN cur2; 18REPEAT 19FETCH cur1 INTO a, b; 20FETCH cur2 INTO c; 21IF NOT done THEN 22IF b < c THEN 23INSERT INTO t3 VALUES (a,b); 24ELSE 25INSERT INTO t3 VALUES (a,c); 26END IF; 27END IF; 28UNTIL done END REPEAT; 29CLOSE cur1; 30CLOSE cur2; 31END// 32CALL sp1(); 33SELECT * FROM t1 ORDER BY id; 34id data 351 1 362 1 373 4 384 5 39SELECT * FROM t2 ORDER BY i; 40i 411 422 433 44SELECT * FROM t3 ORDER BY id; 45id data 461 1 472 1 483 3 49DROP PROCEDURE sp1; 50DROP TABLE t1,t2,t3; 51