MySQL Procédures Stockées
J’ai eu besoin, dans le cadre d’un projet, de supprimer des lignes sur certaines tables contenant un ID spécifique. Cette manipulation devant se faire régulièrement, une procédure stockée a été créée.
DELIMITER $$
DROP PROCEDURE IF EXISTS DeleteOrphan$$
CREATE PROCEDURE DeleteOrphan(IN hwid INT)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE var_table VARCHAR(64);
DECLARE curseur1 CURSOR FOR
SELECT DISTINCT table_name
FROM information_schema.tables
WHERE table_name LIKE 'aaa_%'
AND table_schema='MySchema';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
-- Ouverture du curseur
OPEN curseur1;
REPEAT
-- On récupère chaque élément dans var_table
FETCH curseur1 INTO var_table;
-- Si done = 0 (donc tant qu'on a pas SQLSTAT 02000
IF done = 0 THEN
SET @query = CONCAT('DELETE FROM ', var_table,' WHERE hardware_id = ', hwid);
PREPARE stmt FROM @query; EXECUTE stmt;
END IF;
UNTIL done
-- Done = 1 si on a SQLSTAT 02000 (No data - zero rows fetched, selected, or processed )
END REPEAT;
CLOSE curseur1;
END$$
DELIMITER ;