MySQL存储过程使用IN变量名而不是值

时间:2013-03-27 15:46:59

标签: mysql stored-procedures

我定义了以下存储过程:

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。

我的语法是否有问题,或者我错误地引用了参数?

由于

1 个答案:

答案 0 :(得分: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 ;