Първо, както бе споменато от @eggyal, това не е най-добрият начин да се справите. Но това може да стане с помощта на подготвени изявления. т.е.
DROP PROCEDURE IF EXISTS `exampleOfPrepareStatement`;
CREATE DEFINER = `user`@`%` PROCEDURE `exampleOfPrepareStatement`(inTableName VARCHAR(100))
MODIFIES SQL DATA
SQL SECURITY INVOKER
BEGIN
SET @hr1 = CONCAT('
INSERT INTO `',inTableName,'` (
-- fields (can use parameters same as table name if needed)
)
-- either VALUES () or SELECT here
');
-- Prepare, execute, deallocate
PREPARE hrStmt1 FROM @hr1;
EXECUTE hrStmt1;
DEALLOCATE PREPARE hrStmt1;
END;
Разбира се, можете да добавите имена на полета и т.н., ако е необходимо, или да използвате SELECT или UPDATE и т.н. Това не е идеално, но ще направи това, което търсите.
Трябваше да използвам това на някои места преди, където една и съща поддръжка се извършва на множество таблици, които имат различни имена на полета ( / имена на таблица ) и така вместо да пиша една и съща функция 20 пъти, вместо това използвам този тип съхранена процедура, която след това може да бъде извикан за извършване на индексиране и т.н.
Както също бе споменато от @eggyal, макар че това може да направи, както поискате, може да не стане както трябва. Ако можете да предоставите повече информация, тогава може да получите по-добро решение.