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 ;