Revision: 30695
Updated Code
at August 19, 2010 17:31 by lucien144
Updated Code
DROP PROCEDURE IF EXISTS createQueenslandWards;
DELIMITER //
CREATE PROCEDURE createQueenslandWards()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE wardName varchar(255);
DECLARE Lang varchar(255);
DECLARE Lat varchar(255);
DECLARE cursorWard CURSOR FOR SELECT DISTINCT `ward` FROM `regions` WHERE `territory` = 'QLD';
DECLARE cursorLangLat CURSOR FOR SELECT `centroid_y`, `centroid_x` FROM `regions` WHERE `ward` = wardName;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cursorWard;
REPEAT
FETCH cursorWard INTO wardName;
IF NOT done THEN
OPEN cursorLanglat;
block2: BEGIN
DECLARE doneLangLat INT DEFAULT 0;
DECLARE firstLang varchar(255) DEFAULT '';
DECLARE firstLat varchar(255) DEFAULT '';
DECLARE i int DEFAULT 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET doneLangLat = 1;
REPEAT
FETCH cursorLangLat INTO Lang, Lat;
IF i == 1 THEN
SET firstLang = Lang;
SET firstLat = Lat;
END IF;
INSERT INTO `points` SET `coordinates` = GeomFromText(CONCAT('POINT(', Lang, ' ', Lat ,')')), `type` = wardName, to_text = CONCAT(Lang, ',', Lat), `description` = 'Queensland territory';
SET i = i + 1;
UNTIL doneLangLat END REPEAT;
INSERT INTO `points` SET `coordinates` = GeomFromText(CONCAT('POINT(', firstLang, ' ', firstLat ,')')), `type` = wardName, to_text = CONCAT(firstLang, ',', firstLat), `description` = 'Queensland territory';
END block2;
CLOSE cursorLangLat;
END IF;
UNTIL done END REPEAT;
CLOSE cursorWard;
END//
DELIMITER ;
CALL createQueenslandWards();
Revision: 30694
Updated Code
at August 19, 2010 17:02 by lucien144
Updated Code
DROP PROCEDURE IF EXISTS createQueenslandWards;
DELIMITER //
CREATE PROCEDURE createQueenslandWards()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE wardName varchar(255);
DECLARE Lang varchar(255);
DECLARE Lat varchar(255);
DECLARE cursorWard CURSOR FOR SELECT DISTINCT `ward` FROM `regions` WHERE `territory` = 'QLD';
DECLARE cursorLangLat CURSOR FOR SELECT `centroid_y`, `centroid_x` FROM `regions` WHERE `ward` = wardName;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cursorWard;
REPEAT
FETCH cursorWard INTO wardName;
IF NOT done THEN
OPEN cursorLanglat;
block2: BEGIN
DECLARE doneLangLat INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET doneLangLat = 1;
REPEAT
FETCH cursorLangLat INTO Lang, Lat;
INSERT INTO `points` SET `coordinates` = GeomFromText(CONCAT('POINT(', Lang, ' ', Lat ,')')), `type` = wardName, to_text = CONCAT(Lang, ',', Lat), `description` = 'Queensland territory';
UNTIL doneLangLat END REPEAT;
END block2;
CLOSE cursorLangLat;
END IF;
UNTIL done END REPEAT;
CLOSE cursorWard;
END//
DELIMITER ;
CALL createQueenslandWards();
Revision: 30693
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 19, 2010 16:59 by lucien144
Initial Code
SELECT DISTINCT `ward` FROM `regions` WHERE `territory` = 'QLD';
DROP PROCEDURE IF EXISTS createQueenslandWards;
DELIMITER //
CREATE PROCEDURE createQueenslandWards()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE wardName varchar(255);
DECLARE Lang varchar(255);
DECLARE Lat varchar(255);
DECLARE cursorWard CURSOR FOR SELECT DISTINCT `ward` FROM `regions` WHERE `territory` = 'QLD';
DECLARE cursorLangLat CURSOR FOR SELECT `centroid_y`, `centroid_x` FROM `regions` WHERE `ward` = wardName;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cursorWard;
REPEAT
FETCH cursorWard INTO wardName;
IF NOT done THEN
OPEN cursorLanglat;
block2: BEGIN
DECLARE doneLangLat INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET doneLangLat = 1;
REPEAT
FETCH cursorLangLat INTO Lang, Lat;
INSERT INTO `points` SET `coordinates` = GeomFromText(CONCAT('POINT(', Lang, ' ', Lat ,')')), `type` = wardName, to_text = CONCAT(Lang, ',', Lat), `description` = 'Queensland territory';
UNTIL doneLangLat END REPEAT;
END block2;
CLOSE cursorLangLat;
END IF;
UNTIL done END REPEAT;
CLOSE cursorWard;
END//
DELIMITER ;
CALL createQueenslandWards();
Initial URL
Initial Description
This snippet just showing how to make nested loops with cursors in MySQL.
Initial Title
Nested loop with cursor in procedure
Initial Tags
Initial Language
MySQL