1

我定义了以下存储过程:

DROP PROCEDURE IF EXISTS `Create_Domain_Table`;
DELIMITER ;;
PROCEDURE `Create_Domain_Table`(IN newTable VARCHAR(255))
BEGIN
       CREATE TABLE newTable LIKE `domain_template`;
END;;
DELIMITER ;

但是,当我调用程序时,例如

CALL Create_Domain_Table('test_domain_table');

它创建一个名称为 newtable 而不是 test_domain_table 的新表。

我的语法有问题还是我错误地引用了参数?

谢谢

4

1 回答 1

0

对此使用动态 SQL

DROP PROCEDURE IF EXISTS `Create_Domain_Table`;
DELIMITER ;;
CREATE PROCEDURE `Create_Domain_Table`(IN newTable VARCHAR(255))
BEGIN

   SET @sql = CONCAT('CREATE TABLE `', newTable,'` LIKE domain_template');

   PREPARE stmt FROM @sql;
   EXECUTE stmt;
   DEALLOCATE PREPARE stmt;

END;;
DELIMITER ;
于 2013-03-27T15:49:03.227 回答