Не совсем. Вы не можете иметь переменное количество параметров или процедур с одинаковым именем.
Я не думаю, что есть простое решение вашей проблемы.
РЕДАКТИРОВАТЬ: Я думал о действительно некрасивом решении, но я оставлю это вам, если вы хотите его использовать. Это только непроверенный псевдокод.
Создайте процесс, в котором вы берете varchar, достаточно долго, чтобы содержать значение "table1, table2, table3, ..." и т. Д. Для максимально возможного количества таблиц, которые вы хотите объединить. (может быть другой идентификатор, конечно)
Запишите все таблицы в объединении. Поскольку они одинаковые, просто используйте *, чтобы сэкономить время и пространство
delimiter //
create procedure megaunion (tables varchar(255))
begin
select * from table1 where find_in_set('table1', tables)
union
select * from table2 where find_in_set('table2', tables)
....
end//
список всех ваших таблиц. По крайней мере, вам не нужно перечислять возможные перестановки, и пользователь процедуры не будет знать, как вы это сделали:)