· 8 years ago · Jun 04, 2018, 06:28 PM
1DROP PROCEDURE IF EXISTS listearliers;
2DELIMITER |
3CREATE PROCEDURE listearliers()
4BEGIN
5 DECLARE curdone, vid INT DEFAULT 0;
6 DECLARE idcur CURSOR FOR SELECT DISTINCT id FROM test;
7 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET curdone = 1;
8 DROP TEMPORARY TABLE IF EXISTS earliers;
9 CREATE TEMPORARY TABLE earliers( id INT, entrydate DATE);
10 SET @sql = 'INSERT INTO earliers SELECT id,entrydate FROM test WHERE id=? ORDER BY entrydate LIMIT 2';
11 OPEN idcur;
12 REPEAT
13 FETCH idcur INTO vid;
14 IF NOT curdone THEN
15 BEGIN
16 SET @vid = vid;
17 PREPARE stmt FROM @sql;
18 EXECUTE stmt USING @vid;
19 DROP PREPARE stmt;
20 END;
21 END IF;
22 UNTIL curdone END REPEAT;
23 CLOSE idcur;
24 SELECT * FROM earliers ORDER BY id,entrydate;
25 DROP TEMPORARY TABLE earliers;
26END;
27|
28DELIMITER ;
29CALL listearliers();