1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
DELIMITER $$
CREATE DEFINER=`USER`@`%` PROCEDURE `sel_ligne`()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE _col1, _col2 INT;
DECLARE _col3, _col4 VARCHAR(35);
DECLARE _oldcol1, _oldcol2 INT;
DECLARE _oldcol3, _oldcol4 VARCHAR(35);
DECLARE cur1 CURSOR FOR select col1, col2, col3, col4 FROM new_table ORDER BY col1, col2, col3;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
DROP TABLE IF EXISTS `temp_table`;
CREATE TEMPORARY TABLE `temp_table`(col1 INT, col2 INT, col3 VARCHAR(35), col4 VARCHAR(35));
OPEN cur1;
FETCH cur1 INTO _oldcol1, _oldcol2, _oldcol3, _oldcol4;
CLOSE cur1;
INSERT INTO `temp_table` VALUES (_oldcol1, _oldcol2, _oldcol3, _oldcol4);
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO _col1, _col2, _col3, _col4;
IF done THEN
LEAVE read_loop;
END IF;
IF _col1 <> _oldcol1 or _col2 <> _oldcol2 or _col3 <> _oldcol3 THEN
INSERT INTO `temp_table` VALUES (_col1, _col2, _col3, _col4);
SET _oldcol1 = _col1;
SET _oldcol2 = _col2;
SET _oldcol3 = _col3;
END IF;
END LOOP;
CLOSE cur1;
END$$ |
Partager