DELIMITER // CREATE OR REPLACE PROCEDURE execute_multiple_sql(IN v_sql TEXT) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; SELECT 1 AS code, CONCAT('Error: ', @errno, ' (', @sqlstate, '): ', @text) AS msg; END; -- 按分号分割并执行多条语句 SET @sql = v_sql; WHILE LENGTH(@sql) > 0 DO SET @statement = SUBSTRING_INDEX(@sql, ';', 1); SET @sql = SUBSTRING(@sql, LENGTH(@statement) + 2); IF LENGTH(TRIM(@statement)) > 0 THEN PREPARE stmt FROM @statement; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; END WHILE; SELECT 0 AS code, 'ok' AS msg; END// DELIMITER ;