MySQL存儲過程是一種預編譯的程序單元,可以批量執行SQL語句。在某些情況下,我們可能需要刪除MySQL表中的所有數據。可以使用以下存儲過程來實現:
DELIMITER $$ CREATE PROCEDURE delete_all_data() BEGIN DECLARE finish INT DEFAULT 0; DECLARE tableName CHAR(50); -- 游標獲取所有表名 DECLARE tableNameCursor CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE(); -- 遍歷所有表并刪除數據 DECLARE CONTINUE HANDLER FOR NOT FOUND SET finish = 1; OPEN tableNameCursor; tableDataLoop: LOOP FETCH tableNameCursor INTO tableName; IF finish = 1 THEN LEAVE tableDataLoop; END IF; SET @sql = CONCAT('DELETE FROM ', tableName); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END LOOP tableDataLoop; CLOSE tableNameCursor; END$$ DELIMITER ;
運行此存儲過程時,它將獲取當前數據庫中的所有表名,并刪除每個表中的所有數據。可根據實際情況更改該存儲過程中的變量和表名。