Ten eerste, zoals vermeld door @eggyal, is dit niet de beste manier om dingen aan te pakken. Maar het kan worden gedaan door voorbereide verklaringen te gebruiken. D.w.z.
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;
Je kunt natuurlijk veldnamen etc. toevoegen als dat nodig is, of een SELECT of UPDATE gebruiken etc. Dit is niet ideaal, maar zal doen wat je zoekt.
Ik heb dit op sommige plaatsen eerder moeten gebruiken waar hetzelfde onderhoud wordt uitgevoerd op meerdere tabellen met verschillende veldnamen (/tabelnamen) en dus in plaats van dezelfde functie 20 keer te schrijven, gebruik ik in plaats daarvan dit type opgeslagen procedure die kan dan worden aangeroepen om de indexering enz. te doen.
Zoals ook vermeld door @eggyal , hoewel dit misschien doet wat je vraagt, doet het misschien niet wat je nodig hebt. Als je meer informatie kunt geven, krijg je misschien een betere oplossing.