Först ut, som nämnts av @eggyal, är detta inte det bästa sättet att gå till väga. Men det kan göras genom att använda förberedda uttalanden. Dvs
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;
Du kan naturligtvis lägga till fältnamn etc. efter behov, eller använda en SELECT eller UPDATE etc. Detta är inte idealiskt, men kommer att göra det du letar efter.
Jag har varit tvungen att använda detta på vissa ställen tidigare där samma underhåll utförs på flera tabeller som har olika fältnamn (/tabellnamn) och så istället för att skriva samma funktion 20 gånger använder jag istället den här typen av lagrad procedur som kan sedan anropas för att göra indexeringen etc.
Som också nämnts av @eggyal, även om det här kan göra som du ber om, kanske det inte gör som du behöver. Om du kan ge mer information kan du få en bättre lösning.