DELIMITER \\
DROP PROCEDURE IF EXISTS `sp_copy_all_tables`\\
CREATE PROCEDURE sp_copy_all_tables(IN source_database VARCHAR(100),IN destination_database VARCHAR(100))
BEGIN
DECLARE sql_query VARCHAR(250) DEFAULT "";
DECLARE destination_table VARCHAR(250);
DECLARE source_table VARCHAR(250);
DECLARE exit_status INT DEFAULT 0;
DECLARE tbl_name char(150);
DECLARE list CURSOR FOR SELECT TABLE_NAME FROM information_schema.TABLES
WHERE information_schema.TABLES.table_schema = source_database;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET exit_status = 1;
OPEN list;
REPEAT
FETCH list INTO tbl_name;
IF exit_status = 0 THEN
SET destination_table = CONCAT(destination_database,".",tbl_name);
SET source_table = CONCAT(source_database,".",tbl_name);
SET @sql_query = CONCAT("CREATE TABLE ",destination_table," SELECT * FROM ",source_table);
PREPARE sql_stm FROM @sql_query;
EXECUTE sql_stm;
DEALLOCATE PREPARE sql_stm;
END IF;
UNTIL exit_status = 1 END REPEAT;
CLOSE list;
END\\
DELIMITER ;