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');

test_domain_table ではなく、newtable という名前の新しいテーブルを作成します。

構文に何か問題がありますか、それともパラメーターを間違って参照していますか?

ありがとう

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 に答える