DELIMITER $$
DROP PROCEDURE IF EXISTS `world`.`CURSOR_DEMO`$$
CREATE DEFINER=`tusa`@`%` PROCEDURE  `world`.`CURSOR_DEMO`(countryName VARCHAR(53))
BEGIN
    DECLARE i_ID INT;
    DECLARE s_name VARCHAR(255);
    DECLARE s_district VARCHAR(255);
    DECLARE s_code VARCHAR(53);
    DECLARE l_done          INT DEFAULT  0;
    DECLARE c1 CURSOR FOR
          SELECT ID, city.Name, District,country.name FROM city,country
          where city.CountryCode = country.code and country.name=countryName order by CountryCode,District;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_done=1;
    DROP TABLE IF EXISTS city_table;
    CREATE TABLE city_table (id INT, name VARCHAR(255), district varchar(255), CountryName char(53))
      ENGINE=memory;
    OPEN c1;
  city_loop: LOOP
    SET s_code = '';
    FETCH c1  into i_ID,s_name, s_district, s_code;
    IF s_code LIKE countryName THEN
      INSERT INTO city_table (id, name, district,CountryName) VALUES ( i_ID,s_name, s_district,s_code);
    END IF;
    IF l_done=1 THEN
       LEAVE city_loop;
    END IF;
  END LOOP city_loop;
 
END$$
DELIMITER ;