MySQL存储过程

3

我想做的是,在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服务器版本是否正确...

我不知道问题出在哪里...

1个回答

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 //

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接