Tworzenie tabeli MySQL z nazwy zmiennej

Dowiedz się, jak stworzyć tabelę w MySQL o nazwie przekazywane jako parametr. Może to być przydatne, gdy trzeba utworzyć tabele przy użyciu procedur przechowywanych.

A+ A-

Dziś musiałem napisać procedurę przechowywaną mysql, które mogą mieć parametr i stworzyć nową tablicę z nazwą samego jako wartość tego parametru. Wszystko było proste, chyba że nazwa nowo utworzonej tabeli stawał się nazwa parametru zamiast wartości parametru.

Było to intrygujące problemu i zajęło sporo badań nad Internetem , zanim udało mi się znaleźć rozwiązanie. Rozwiązaniem jest użycie oświadczenie przygotowaniu. Oto kod, który pracował (jestem obcinania CREATE TABLE i wstawić do sprawozdania, aby ułatwić czytać):

 DELIMITER $$ 
 DROP PROCEDURA IF EXISTS `tdb_new`.SP_createTempRankTable $$ 
 TWORZENIE Definer = `` @ root` localhost` PROCEDURA SP_createTempRankTable (IN TableName VARCHAR (200)) 
 ZACZYNAĆ 
 SET @ dropTab = CONCAT ( "DROP TABLE IF EXISTS" TableName); 
 SET @ CREATETAB = CONCAT ( "CREATE TABLE", tableName "(varchar tmp_template_id (10))"); 
 SET @ insertTab = CONCAT ( "INSERT INTO", tableName "(tmp_template_id) SELECT tmp_template_id z szablonu"); 
 PRZYGOTOWANIE stmtDrop OD @dropTab; 
 EXECUTE stmtDrop; 

 PRZYGOTOWANIE stmtCreate OD @createTab; 
 EXECUTE stmtCreate; 
 PRZYGOTOWANIE stmtInsert OD @insertTab; 
 EXECUTE stmtInsert; 
 KONIEC $$ 
 DELIMITER; 

Przechodząc nazwę tabeli jako zmienna utworzenia tabeli, INSERT INTO TABLE i upuść (i pewnie wielu innych) oświadczenia nie będzie działać. Przygotowane sprawozdania są wyjścia.

Mam nadzieję, że będzie to pomocne dla kogoś! Proszę nie wahaj się zapytać mnie, jeśli masz jakiekolwiek pytania. Będę szczęśliwy, aby spróbować pomóc. Dziekujemy za korzystanie TechWelkin.