DROP PROCEDURE IF EXISTS mysql.truncateAll;
DELIMITER $$
CREATE PROCEDURE mysql.truncateAll()
BEGIN
    DECLARE vSchema VARCHAR(255);
	DECLARE vTable VARCHAR(255);
    DECLARE vDone BOOL;

    DECLARE cTables CURSOR FOR 
		SELECT `TABLE_SCHEMA`, `TABLE_NAME`
			FROM `information_schema`.`TABLES`
			WHERE `TABLE_TYPE` = 'BASE TABLE'
				AND `TABLE_ROWS` > 0
				AND `TABLE_SCHEMA` NOT IN ('information_schema', 'mysql', 'performance_schema');

	DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
	
    SET FOREIGN_KEY_CHECKS = FALSE;
	OPEN cTables;

	l: LOOP
		SET vDone = FALSE;
		FETCH cTables INTO vSchema, vTable;
		
		IF vDone THEN
			LEAVE l;
		END IF;

        SET @stmt = CONCAT('TRUNCATE TABLE `', vSchema, '`.`', vTable, '`');
		PREPARE stmt FROM @stmt;
		EXECUTE stmt;
		DEALLOCATE PREPARE stmt;
	END LOOP;
		
    CLOSE cTables;
    SET FOREIGN_KEY_CHECKS = TRUE;
END$$
DELIMITER ;