2012-08-07 192 views
3

我想要做的是,通过在存储过程中传递表名作为参数在mysql中创建一个表。我在mysql中使用以下代码存储过程。Mysql存储过程

DELIMITER // 
CREATE PROCEDURE createtable(IN tablename varchar(20)) 
BEGIN 
    SET @s=CONCAT('CREATE TABLE', tablename, '(month varchar(20))'); 
    PREPARE stmt FROM @s; 
    EXECUTE stmt; 
END // 

,当我把它叫做

CALL createtable('account'); 

我收到以下错误

您的SQL语法错误;检查MySQL服务器版本正确的语法给我们......

我不知道我错了..

回答

2

你之前,你的表名后忘记的空间。尝试

DELIMITER // 
CREATE PROCEDURE createtable(IN tablename varchar(20)) 
BEGIN 
    SET @s=CONCAT('CREATE TABLE ', tablename, ' (month varchar(20))'); 
    PREPARE stmt FROM @s; 
    EXECUTE stmt; 
END // 
+0

谢谢juergen d,它工作:) – 2012-08-07 11:38:32