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